【发布时间】:2012-03-09 14:52:55
【问题描述】:
我不确定这里的具体实现是否重要,但为了完整起见,我使用 Autofac 作为新应用程序的依赖注入容器。
我所有的存储库都依赖于 DbContext(工作单元),我使用 MVC3 集成库将其配置为 InstancePerHttpRequest(),以便每个请求的存储库之间共享工作单元。
我查看了一些使用 Autofac 的应用程序,我注意到他们将存储库的生命周期设置为 SingleInstance()(单例)。这是正确的吗?
我问的原因是我可以理解我们实际上并不需要多个存储库类,但如果我们正在创建存储库的单个实例,那么这肯定意味着只有一个对 DbContext 的引用。在我的存储库实现中,它以类成员的身份访问DbContext,例如_dbContext.Set<T>废话....
所以_dbContext 必须引用内存中的某个对象。两个单独的请求怎么可能出现,有一个唯一的 DbContext 但共享同一个存储库?
我是否错过了与 DI 工作方式有关的某些内容?
【问题讨论】:
-
这听起来像是生命周期的错误配置,因为我当然可以理解你为什么问。然而,理论上,使用这个技巧是可以让它工作的:stackoverflow.com/questions/4648318/…
标签: asp.net-mvc dependency-injection inversion-of-control