假设我有一个不错的域模型,在需要的地方使用(构造函数)DI。现在我希望能够坚持这个模型,所以我开始添加基础设施(实体框架)来做到这一点。现在发生的是持久性框架应该能够使用您的IoC容器初始化您的类型。
也许这是可能的,也许不是。无论如何,我现在想知道的是;通常在你的POCO课上使用DI吗?如果是,如何让Entity Framework使用我最喜欢的IoC容器(在我的案例中为NInject)来构建我的类。
答案 0 :(得分:5)
使用IoC容器来构建从数据库中获取的实体是不错的,我在我的项目中这样做。
ORM不应该决定你的设计。 NHibernate可以很好地与IoC Container,我不知道EF,但我怀疑它没有。如果我是你的话,我会把EF换成NHibernate,或者其他任何东西。
答案 1 :(得分:2)
这是DDD社区中的一个宗教论点:我应该将服务注入我的实体吗?这是一个你必须自己回答的问题。我不会告诉你我的想法,因为它具有高度的语境 - 我认为根据几个因素而改变。
我认为你需要花几个小时深入研究ddd list的档案,以建立一个适合你的答案。
答案 2 :(得分:1)
我想使用EF,所以考虑使用EF4,你可以使用POCO模板。 您可以围绕POCO类实现存储库,并且当您将其与另一个ORM一起使用时,您将能够使用IoC。你有POCO,它就是应用程序架构的一部分。
看看这个漫步:
http://blogs.msdn.com/adonet/pages/walkthrough-poco-template-for-the-entity-framework.aspx