在做DDD时,是否应该在POCO课程中使用DI?

时间:2010-03-03 09:09:15

标签: .net entity-framework dependency-injection domain-driven-design ioc-container

假设我有一个不错的域模型,在需要的地方使用(构造函数)DI。现在我希望能够坚持这个模型,所以我开始添加基础设施(实体框架)来做到这一点。现在发生的是持久性框架应该能够使用您的IoC容器初始化您的类型。

也许这是可能的,也许不是。无论如何,我现在想知道的是;通常在你的POCO课上使用DI吗?如果是,如何让Entity Framework使用我最喜欢的IoC容器(在我的案例中为NInject)来构建我的类。

3 个答案:

答案 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