【问题标题】:Dependency Injection and multiple projects in solution依赖注入和解决方案中的多个项目
【发布时间】:2011-09-08 20:10:50
【问题描述】:

我一直在关注this 文章,内容是关于使用存储库模式和 UnitOfWork 与实体框架。我还计划将 Ninject 作为我的 IOC 容器用于即将进行的项目。

根据文章中的示例代码,NorthwindData 项目中的 NorthwindContext 类实现了位于 NorthwindModel 项目中的 IUnitOfWork 接口。

如何利用依赖注入来消除 NorthwindModel 对 NorthwindData 的依赖?示例项目中的存储库类看起来好像它们将依赖 IOC 容器来注入我理解的 NorthindContext 实例。

另外,我是否需要在解决方案中创建第三个项目来容纳 DI 的东西。有关如何设置的任何示例?

编辑:

我想我上面的问题源于一个更普遍的问题..

让这两个项目依赖于从 NWData 到 NWModel 的程序集引用是不是很糟糕?我的假设是 DI 会消除这种需求。

【问题讨论】:

    标签: c# .net entity-framework repository unit-of-work


    【解决方案1】:

    要打破从 NorthwindModel 到 NorthwindData 的依赖关系,请查看存储库需要来自 NorthwindContext 的内容。将其拉入接口 IDataContext,在 NorthwindModel 项目中声明它并让 NorthwindContext 实现它。现在使用 DI 将 NorthwindContext 注入现在仅依赖于 IDataContext 的存储库中。

    关于可能的第三个项目:是的,有一个应用程序根项目只负责在启动时进行设置可能是个好主意。但这取决于范围。

    【讨论】:

    • 不确定这是否真的对我有帮助……或者我问错了问题。如果 NorthwindData 有一个从 NorthwindModel 实现接口的类,我仍然需要将 NWData 的程序集引用添加到 NWModel 以构建项目......这是我认为我需要避免的......也许我错了关于这个??
    • @stephen:可以让 NWData 依赖于 NWModel。您要避免的是让您的表示层依赖于 NWData,因为它应该在两个“层”之外,并且您只想让每个项目接触与其相邻的层。
    • 这不会限制我单独测试每个项目的能力吗?或者将 NWData 换成另一个在 NWModel 中实现接口的项目
    • 啊,我以为你的问题是相反的。我会争辩说,虽然 NWData 依赖于 NWModel 是可以的,因为模型被视为应用程序的核心,而数据访问被视为外围。这遵循六边形架构风格
    • 项目中的 NWModel/NWData 只是我的示例。我正在寻找更笼统的建议。一个包含多个项目的解决方案,并设置 DI 以促进 TDD 和灵活性。
    猜你喜欢
    • 2020-01-02
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 2012-07-13
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多