我一直在关注使用存储库模式和UnitOfWork与实体框架的this文章。我还计划使用Ninject作为即将到来的项目的IOC容器。
鉴于本文中的示例代码,NorthwindData项目中的NorthwindContext类实现了NorthwindModel项目内部的IUnitOfWork接口。
如何利用依赖注入来消除对NorthwindData的NorthwindModel的依赖?示例项目中的存储库类看起来好像依赖于IOC容器来注入我理解的NorthindContext实例。
另外,我是否需要在解决方案中创建第三个项目以容纳DI事物。关于如何设置的任何样本?
编辑:
我想我上面的问题源于一个更普遍的问题。
让两个项目依赖于从NWData到NWModel的程序集引用是不是很糟糕?我的假设是DI会消除这种需要。
答案 0 :(得分:1)
要打破从NorthwindModel到NorthwindData的依赖关系,请查看存储库需要NorthwindContext的内容。将它拉入接口IDataContext,在NorthwindModel项目中声明并让NorthwindContext实现它。现在使用DI将NorthwindContext注入到现在仅依赖于IDataContext的存储库中。
关于可能的第三个项目:是的,应用程序根项目只负责启动时启动可以是个好主意。但这取决于范围。