【发布时间】:2015-08-26 13:14:37
【问题描述】:
使用 EF 6 和 Ninject 3.2.2 构建应用程序我在思考如何以智能方式访问 DbContext 时遇到了一些麻烦。
据我了解,在 Ninject 的较新版本中,仅鼓励构造函数注入。作为 EF 6,它本身就是 repo 和工作单元,我没有在 EF 之上进行任何抽象。 如果希望能够使用多个小型工作单元,那么将 DbContext (uow) 注入到每个需要它的类中是行不通的。 以非 IoC 的方式,我会这样做:
Using(var db = new DbContext){}
如何使用 Ninject 实现这一点,因为我不再可以在我的 using 块中执行 kernel.get...
【问题讨论】:
-
EF 让您可以访问数据库。您仍然需要告诉它您希望如何在该级别提取和操作数据。出于这个原因,我认为使用 repos 和 UoWs 没有任何问题。事实上,这就是 Julie Lerman 在 Pluralsight 课程中展示的内容。
-
那是什么课程?我刚刚看到“EF 6 Beginner”课程,是的,se 确实使用了 repos,但她不使用 IoC,所以她没有解决我遇到的问题......
-
我非常高兴地观看了“企业中的实体框架”。关于 IoC 问题,一旦你有了 repos,你就可以像任何其他类一样注入它们。
-
感谢您的建议,我会检查该课程。回购并不是真正的问题,事实上我想要多个小单元在我的方法中......
-
DbContext是框架类型;你应该not auto-wire framework types。
标签: c# entity-framework ninject inversion-of-control