Dav*_*vid 4 design-patterns domain-driven-design dto
当数据库编写通过标准的应用程序为每个表,我有以下特性:CreatedOn,CreatedBy,ModifiedOn,ModifiedBy,Archived.
但是试图跟踪DDD我在质疑这些属性是否真的是域的一部分,应该包含在域对象中.如果我要从域中排除这些"元数据"属性但仍然希望它们在我的数据库中,那么如果我打算使用ORM,我需要实现某种DTO层.
所以,领域模型映射到DTO的CreatedOn,ModifiedOn等设置,然后推到数据库中.
所以我想我的问题是:
在进行域驱动设计时,您的实体通常与数据库的结构无关.
您很快就会到达某个角度,无论如何您需要在ORM的表对象和域的聚合之间进行映射.
将数据库驱动的方面强制进入您的域模型与DDD的全部内容相矛盾.
所以是的,我建议将ORM的表对象(无论如何都是纯数据)映射到聚合中.这就是Repository模式发挥作用的地方.它将通过转换基础数据来提供域的对象.
如果创建/修改日期和用户等元数据本身不是业务域的一部分(即系统范围的日志记录要求),则可以在转换回要保存的表对象时注入给定用户和日期/时间.
分层体系结构可能如下所示:
----------------------------
| Domain | (Aggregates)
----------------------------
----------------------------
| Repositories | (transforms table-objects into Aggregates)
----------------------------
----------------------------
| OR-Mapper | (loads records from DB into table-objects)
----------------------------
----------------------------
| Database | (this is where the data lives)
----------------------------
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1146 次 |
| 最近记录: |