我正在努力完成這項工作。我已經得到了統一和Unity.AspNet.WebApi包(V 1404年3月5日)安裝並低於其附帶的軟件包使用WebApi中的Unity解決每個請求的dbcontext
public static class UnityWebApiActivator
{
/// <summary>Integrates Unity when the application starts.</summary>
public static void Start()
{
var container = UnityConfig.GetConfiguredContainer();
var resolver = new UnityHierarchicalDependencyResolver(container);
GlobalConfiguration.Configuration.DependencyResolver = resolver;
// DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule));
}
/// <summary>Disposes the Unity container when the application is shut down.</summary>
public static void Shutdown()
{
var container = UnityConfig.GetConfiguredContainer();
container.Dispose();
}
}
和我的類型註冊激活代碼如下所示:
public static void RegisterTypes(IUnityContainer container)
{
container.RegisterType<IAuditService, AuditService>(
new PerThreadLifetimeManager(),
new InjectionConstructor(new SecurityDbContext()));
}
到目前爲止,我嘗試過PerThreadLifetimeManager和TransientLifetimeManager,但沒有成功。我也得到了Unity.Mvc包,並嘗試使用MSDN建議的PerRequestLifetimeManager,但沒有運氣。它總是給我同樣的dbcontex實例。
我寧願不包括任何MVC依賴,因爲這純粹是WebApi,但是當我嘗試使用Unity.Mvc時,我也結束了一些http運行時錯誤。
任何人都有一個很好的建議/例子解決dbcontext每個請求與WebApi中的Unity,最好沒有任何mvc依賴?
無法獲取此'SecurityDbContext'。這是一個自定義的繼承Dbcontext類的類嗎? – picnic4u 2016-05-16 19:07:25
是SecurityDbContext繼承DbContext,它是通過覆蓋OnModelCreating方法添加EF映射的地方。 – Otake 2016-05-22 13:02:26
@Otake如何在控制器上聲明它以使其工作? Tks – Pascal 2016-08-11 21:22:52