依赖注入存储库生存期

时间:2012-03-09 14:52:56

标签: asp.net-mvc dependency-injection inversion-of-control

我不确定具体实现在这里是否重要,但为了完整性我使用Autofac作为新应用程序的依赖注入容器。

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

我查看了一些使用Autofac的应用程序,我注意到他们将其存储库的生命周期设置为SingleInstance()(单例)。这是对的吗?

我问的原因是我可以理解我们并不真正需要多个存储库类,但是如果我们要创建一个存储库的单个实例,那么这肯定意味着只有一个{{1}的引用}。在我的存储库实现中,它作为类成员访问DbContext,例如DbContext等等......

所以_dbContext.Set<T>必须引用内存中的某个对象。两个单独的请求怎么可能出现,有一个唯一的_dbContext但共享相同的存储库?

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

1 个答案:

答案 0 :(得分:2)

您没有遗漏任何内容 - SingleInstance()几乎肯定是您方案中存储库的错误选择。