【发布时间】:2016-03-18 22:44:48
【问题描述】:
我正在重构一个项目,该项目在数据存储库中为每个方法调用创建多个 DbCONtexts。 所以我希望每个 HTTP 请求都有一个 DbContext 实例。
我已经尝试过:
container.RegisterType<ApplicationDbContext>(new PerRequestLifetimeManager());
对于每个存储库:
...
container.RegisterType<IBusinessRepository, BusinessRepository>(new InjectionConstructor(new ApplicationDbContext()));
container.RegisterType<ICountryRepository, CountryRepository>();
...
当然,这将为每个存储库创建一个新的 DbContext() 实例。
我试过了
container.RegisterType<IBranchCategoryRepository, BranchCategoryRepository>(
new InjectionConstructor(container.Resolve<ApplicationDbContext>()));
但这给了我:
PerRequestLifetimeManager 只能在一个上下文中使用 HTTP 请求。此错误的可能原因是使用生命周期 非 ASP.NET 应用程序上的管理器,或在一个线程中使用它 未与适当的同步上下文相关联。
那么如何将相同的实例注入每个存储库?
【问题讨论】:
标签: asp.net-mvc inversion-of-control unity-container