领域驱动设计、.NET 和实体框架
Posted
技术标签:
【中文标题】领域驱动设计、.NET 和实体框架【英文标题】:Domain Driven Design, .NET and the Entity Framework 【发布时间】:2011-01-05 22:33:23 【问题描述】:我是域驱动设计的新手,但想学习它并将其用于新的应用程序。 我将使用实体框架进行数据访问。
到目前为止的基本布局是:
ASP.NET MVC 和其他客户端(移动 设备等) | 网络服务 | 领域模型(服务、存储库、聚合、实体和值对象) | 数据访问层(实体框架) | 数据存储 (SQL Server)
在数据访问层和域模型之间传输数据的最佳方式是什么? 我认为域模型中的实体是 POCO 对象,它们应该映射到实体框架对象/从实体框架对象映射。这是一个好的解决方案吗?
如果是这样: 这种映射应该如何以及在哪里发生? (域模型层或数据访问层) 我应该在哪里以及如何查询实体框架(即根据搜索返回一个列表)?
【问题讨论】:
请记住,DDD 最终只是一种以客户自己的语言(域)有效地与客户沟通的方式,然后以与该语言一致的方式设计您的应用程序。它本身不是一种开发技术。因此,对于将什么放在哪里,没有硬性规定。 @Robert Harvey:非常正确,但对于如何将 DDD 指南应用于特定(可能相当普遍)的情况提供一些指导仍然非常有用。 【参考方案1】:ANDREY YEMELANOV 已经完成了关于这个确切主题的硕士论文:
http://gupea.ub.gu.se/dspace/bitstream/2077/10462/1/gupea_2077_10462_1.pdf
随着支持 POCO 对象的 EF 4 的发布,这将变得更加容易。
与此同时,您可以尝试使用 automapper 在域和 EF 对象之间进行映射,请参阅:http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/01/22/automapper-the-object-object-mapper.aspx
【讨论】:
【参考方案2】:我会从 ableobjects.com 购买企业核心对象 (ECO)
确实everything you would ever want from a DDD framework
【讨论】:
【参考方案3】:S#arp architecture project 是指导应用 DDD 的绝佳起点。它基于 NHibernate,但使用的原则应该同样适用于 EF...
【讨论】:
【参考方案4】:我认为域模型中的实体是 POCO 对象,它们应该映射到实体框架对象/从实体框架对象映射。这是一个好的解决方案吗?
我认为是的。
这是我们已经非常成功地完成的事情,尽管在我的例子中是在 Java 世界中。我们的领域类包含大部分业务逻辑。每个都有一个对瘦数据实体对象的引用,并将持久属性的获取和设置委托给数据实体。
【讨论】:
以上是关于领域驱动设计、.NET 和实体框架的主要内容,如果未能解决你的问题,请参考以下文章