3
我不确定具体的实现在这里很重要,但为了完整我使用Autofac作为我的依赖注入容器为新的应用程序。依赖注入存储库的生存期
我所有的存储库都依赖于我使用MVC3集成库配置为InstancePerHttpRequest()
的DbContext
(工作单元),以便每个请求的存储库之间共享工作单元。
我看过一些使用Autofac的应用程序,我注意到它们将其存储库的生命周期设置为SingleInstance()
(singleton)。它是否正确?
我问的原因是我可以理解我们并不真的需要多个存储库类,但是如果我们创建一个存储库的单个实例,那肯定意味着只有一个对DbContext
的引用。在我的资源库实现中,它作为一个类成员访问DbContext
,例如_dbContext.Set<T>
等等....
因此_dbContext
必须有一个对内存中某个对象的引用。两个独立的请求怎么可能出现,有一个独特的DbContext
但共享相同的存储库?
我错过了与DI工作方式有关的事情吗?
它大部分听起来像生命的错误配置,因为我当然可以理解你为什么问。但是,从理论上讲,可以使用这个技巧来实现它:http://stackoverflow.com/questions/4648318/dependency-injection-new-instance-required-in-several-of-a-classes-methods/4650050 #4650050 – 2012-03-09 15:26:45