2

在我的项目中,我使用的是领域驱动设计模式。我有各种用于持久化模型对象的数据映射器。我的一些模型包含其他模型作为属性(例如,模型类 Book 包含一组模型类 Person 作为作者)。

Book
  |->string title
  |->Person[] authors

每个模型都有一个对应的映射器(例如 Book_Mapper、Perspon_Mapper)。

在持久化模型对象时,一个映射器是否可以调用另一个映射器:

例如,当持久化 Book 对象时,我调用

Book_Mapper::Save(Book)

调用

Person::Mapper(Person)

这本书的每个作者?

4

1 回答 1

5

从 DDD 的角度来看,要解决有关数据映射器的问题,首先要稍微提炼一下您的模型并确定您的聚合、实体和值对象,这一点很重要。

假设它Book是一个聚合,aPerson是一个值对象。在这种情况下,不需要创建单独的映射器,Person因为它始终作为Book聚合的一部分持续存在,因此书籍的映射器也应该处理人的映射。事实上,为 person 创建一个单独的映射器可能会令人困惑。

然而,如果Person也是一个集合,那么最好Book仅通过 ID 引用作者。在这种情况下,持久化一本书时无需调用人员映射器。

于 2013-04-17T17:31:16.757 回答