我目前正在学习开发的域驱动设计方法,并使用Tim McCarthy的.NET域驱动设计和C#书作为指南。
这本书非常有用,但在使用实体框架时,我变得有点不安,特别是4.1中提供的代码优先方法。
基于本书中的示例,分层架构方法应该意味着基础架构层无法看到模型/域。
那么在db上下文类中映射我的域poco的最佳方法是什么(我假设)应该位于基础结构层中,而不会违反分层方法?
我很有可能对自己的想法完全出错,所以请告诉我,因为我还在学习!
非常感谢:)
亚当
答案 0 :(得分:8)
今天大多数ORM,如EF 4.1和Nhibernate(流利的Nhibenrate插件)可以通过映射类描述从POCO到Db上下文的映射。这些映射类最好放在基础结构数据库项目中,也可以与ORM会话特定类一起放置。
然后,您的POCO域类应放在一个不应该引用其他组件或项目的Domain项目中。但是基础结构数据库项目应该引用域,以便您的映射类可以描述如何从持久状态加载POCO。
使用大量依赖注入以及良好且可靠的IoC框架(Windsor Castle ...)。这将有助于你放松一点点。最好依赖于抽象/接口而不是实现。
这是基础知识 http://www.infoq.com/articles/ddd-in-practice
但是你决定采用Code First方法。如果你有选择,我真的推荐这种方法。但有时当旧的遗留系统发生干扰时,情况并非如此简单。