我不确定具体的实现在这里是否重要,但为了完整起见,我正在使用Autofac作为我的新应用程序的依赖注入容器。
所有我的存储库都依赖于DbContext
(工作单位),我已经使用MVC3集成库将其配置为InstancePerHttpRequest()
,以便在每个请求的存储库之间共享工作单位。
我看过一些使用Autofac的应用程序,我注意到它们将其存储库的生命周期设置为SingleInstance()
(单例)。这是正确的吗?
我问这个问题的原因是,我可以理解我们不真正需要多个存储库类,但如果我们创建一个存储库的单个实例,那么这肯定意味着只有一个对DbContext
的引用。在我的存储库实现中,它将DbContext
作为一个类成员访问,例如_dbContext.Set<T>
blah....
因此,_dbContext
必须具有对内存中某个对象的引用。如何可能出现两个独立的请求,具有唯一的DbContext
,但共享同一个存储库?
我是否错过了DI工作方式的某些内容?