【发布时间】:2012-07-22 10:05:01
【问题描述】:
我对 DDD 还很陌生,这是我的困境:
我必须保留一个引用实体 B 的实体 A(让我们认为两者都是实体根)。 UI 层通过 A_DTO(A 的 DTO 类)收集所有这些信息(在控制器处),将属性从 DTO 映射到 A 的新实例,现在为了在 A 中引用 B,UI 发送一个 id。当我在存储库后面使用 ORM 时,我想从 BRepository 查找 B 的对象实例,在我们正在构建的新 A 实例上填充引用,最后调用 ARepository.save(A instance)。
我有几个选择
- 在 UI 层(在控制器或某种服务外观)中执行所有这些操作或
- 在名为 createA 的 ApplicationService 甚至是域 Service 中执行此操作。
哪个选项是正确的??。这里真正突出的是通过其 id 查找 B 以获取对 A 对象设置的引用的过程,这可以同样被认为是保持 ORM 满足或保持域模型一致的过程。在 A 上设置 B 的引用的过程中可能存在一些隐含的业务规则和验证,我认为这些是这里做出决定的驱动点。
此外,这里可能更奇怪的是验证是否应该在创建实体的过程中编织,并通过可以通过 UI 向客户端冒泡的特定错误来说明构造函数和/或设置器并通过回购获得另一个级别的验证?或者作为控制器中发生的显式步骤??
【问题讨论】:
标签: domain-driven-design ddd-repositories