【问题标题】:Dependency Injection Repository Lifetime依赖注入存储库生命周期
【发布时间】:2012-03-09 14:52:55
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 这听起来像是生命周期的错误配置,因为我当然可以理解你为什么问。然而,理论上,使用这个技巧是可以让它工作的:stackoverflow.com/questions/4648318/…

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


【解决方案1】:

您没有错过任何东西 - SingleInstance() 几乎肯定是您方案中存储库的错误选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    相关资源
    最近更新 更多