依赖注入仓储生命周期

3

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

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

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

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

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

我是否错过了DI工作方式的某些内容?


1
这听起来大多数是生命周期配置错误,因为我完全理解你的疑问。然而,理论上可以使用这个技巧使其工作:https://dev59.com/3m445IYBdhLWcg3w5OEH#4650050 - Mark Seemann
1个回答

2

您没有错过任何东西 - 在您的情况下,SingleInstance() 几乎肯定不是存储库的正确选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接