2012-03-09 49 views
3

我不确定具体的实现在这里很重要,但为了完整我使用Autofac作为我的依赖注入容器为新的应用程序。依赖注入存储库的生存期

我所有的存储库都依赖于我使用MVC3集成库配置为InstancePerHttpRequest()DbContext(工作单元),以便每个请求的存储库之间共享工作单元。

我看过一些使用Autofac的应用程序,我注意到它们将其存储库的生命周期设置为SingleInstance()(singleton)。它是否正确?

我问的原因是我可以理解我们并不真的需要多个存储库类,但是如果我们创建一个存储库的单个实例,那肯定意味着只有一个对DbContext的引用。在我的资源库实现中,它作为一个类成员访问DbContext,例如_dbContext.Set<T>等等....

因此_dbContext必须有一个对内存中某个对象的引用。两个独立的请求怎么可能出现,有一个独特的DbContext但共享相同的存储库?

我错过了与DI工作方式有关的事情吗?

+1

它大部分听起来像生命的错误配置,因为我当然可以理解你为什么问。但是,从理论上讲,可以使用这个技巧来实现它:http://stackoverflow.com/questions/4648318/dependency-injection-new-instance-required-in-several-of-a-classes-methods/4650050 #4650050 – 2012-03-09 15:26:45

回答

2

你没有遗漏任何东西 - SingleInstance()在你的场景中几乎肯定是存储库的错误选择。