2011-11-07 247 views
6

我目前正在学习由Tim McCarthy作为指导,开发和使用C#的.NET域驱动设计的域驱动设计方法。域驱动的设计和实体框架4.1(代码优先)

这本书真的很有帮助,但是在使用实体框架时,我变得有点不习惯了,特别是4.1中可用的代码优先方法。

根据本书中的示例,分层体系结构方法应该意味着基础架构层无法看到模型/域。

那么什么是最好的方法来映射我的域poco的db上下文类(我认为)应该坐在基础设施层,而不违反分层的方法?

有一个很好的机会,我完全错了我的想法,所以请让我知道,因为我还在学习!

非常感谢:)

亚当

+1

如果您使用的是Code-First EF,那么POCO确实是您的域模型 – Didaxis

+0

也就是我所了解的,但是您将如何跨层引用这些对象,特别是基础设施到域/模型? – adam

+0

我的模型位于类库中,业务库引用该DLL。我建议阅读一些关于工作单元和存储库模式的文章 - 他们可以很好地与POCO合作。这里:http://www.asp.net/entity-framework/tutorials/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application – AFD

回答

7

好最ORM的今天,像EF 4.1和NHibernate(流利Nhibenrate插件)可以描述从POCO映射到数据库的上下文通过映射类。这些映射类最好放置在基础结构数据库项目中,可能与ORM会话特定类一起。

然后,您的POCO域类应放置在不应该引用其他组件或项目的域项目中。但基础设施数据库项目应引用域,以便您的映射类可以描述如何从持久状态加载POCO。

使用大量的依赖注入与良好而坚实的IoC框架(温莎城堡...)。这将有助于你放松一点点。它更好地依赖于抽象/接口而不是实现。

这里是基本 http://www.infoq.com/articles/ddd-in-practice

可是好东西,你决定去代码优先的方法。如果您有选择,我真的推荐这种方法。但有时,当旧的遗留系统干扰时,事情并不那么容易。

+0

感谢Magnus,this是我采取的方法 - 分离引用域和基础结构层的程序集! 昨天玩过它,代码优先看起来像EF的一个很好的功能! – adam

+0

祝你好运亚当。随意直接向我询问或讨论其他DDD问题。我总是很有趣,人们是如何以不同的方式看待问题的...... –

+0

感谢Magnus - 我还有几个问题,最好的联系方式是什么? – adam