排序POCO,存储库模式,工作单元和ORM

时间:2010-12-30 05:38:38

标签: c# linq-to-sql entity-framework orm domain-driven-design

我正在阅读所有这些主题的背景:

POCO
存储库模式
工作单位
使用ORM映射器

好的,我在书中看到了每本书的基本定义等等,但我无法将这些定义在一起。含义示例结构(DL,BL,PL)。

那么,你有你的DL对象包含你的CRUD方法,然后你的BL对象使用ORM“映射”回你的DL对象?那么DTO呢......他们是你的DL对象吗?我很困惑。

任何人都能真正解释这一切或向我发送示例代码吗?我只想把它们放在一起。我正在确定是否要使用LINQ to SQL或EF 4(还不确定NHibrernate)。

这里没有获取物理层和代码层中的概念以及每种类型的对象包含的内容(只是DTO的属性,以及与表字段匹配的核心DL类的CRUD)。

我只需要一些指导。我正在阅读福勒的书,开始阅读埃文斯,但还没有读完所有。

1 个答案:

答案 0 :(得分:7)

我将假设DL - 域层,BL - 业务层和PL - 持久层。

如果您需要简单的CRUD应用程序,则不应使用DDD原则。如果您要实施复杂的域模型,请使用DDD。

在DDD中,您将DL和BL与域对象/服务中的所有逻辑相结合。否则,您将构建Anemic Domain Model。避免使用属性上的setter并仅通过ChangeAddress等方法调用而不是obj.Address = newAddress或Activate而不是obj.Active = true来更改对象。

数据传输对象应仅用于与外部服务/ UI进行通信。在您的域内,您将仅使用域对象。

我建议使用基于任务的用户界面。

在持久层中使用哪种持久性技术取决于您的要求。在您选择SQL RDBMS之前,请先查看Object-relational impedance mismatch维基百科页面。

有关实施样本,请查看相关问题:

  1. Are there any open source projects using DDD (Domain Driven Design)?
  2. Good Domain Driven Design samples
  3. .NET DDD Example