关于在域驱动设计中使用聚合(而不是AR)的问题。
使用熟悉的:Order(聚合根[AR])和OrderLine(聚合成员[AM])作为示例。如果假设订单是持久的,那么从DDD的角度来看,如何正确地对聚合成员进行操作?
例如,我可以搜索(查找操作)给定项目的所有OrderLines吗?这样做的正确方法是什么?如果我将它们作为Value Objects返回,那似乎是错误的,实际上它们是持久化Domain Objects。此外,我可能需要能够从其中一个获得订单。然而,如果我将它们(从Repository层)作为Entity对象返回,那么我似乎违反了Aggregate Root规范规则。
答案 0 :(得分:0)
我想我能回答我的问题。如果我现在正确地遵循,那么完全可以了解聚合根下面的实体。但是,无法存储/查看/引用ID。但是你可以参考AR Id。
因此,我可以说:OrderRepository.findOrderLines(withProductId)方法返回OrderLine对象的列表,而不是它们的Id,但在这些对象上具有Order Id(AR ID)就可以了。
如果这是偏离基础,请评论。