在进行领域驱动设计时,您的实体通常与数据库的结构没有太大关系。
您很快就会发现,无论如何,您都需要在 ORM 的表对象和您的域的聚合之间进行映射。
将数据库驱动的方面强加到您的域模型中与 DDD 的全部内容相矛盾。
所以是的,我建议将 ORM 的表对象(无论如何都是纯数据)映射到您的聚合中。这就是存储库模式发挥作用的地方。它将通过转换底层数据来提供域的对象。
如果像创建/修改日期和用户这样的元数据本质上不是业务域的一部分(即系统范围的日志记录要求),则可以在转换回表对象以保存时注入给定的用户和日期/时间。
分层架构可能如下所示:
----------------------------
| Domain | (Aggregates)
----------------------------
----------------------------
| Repositories | (transforms table-objects into Aggregates)
----------------------------
----------------------------
| OR-Mapper | (loads records from DB into table-objects)
----------------------------
----------------------------
| Database | (this is where the data lives)
----------------------------