EntityA是聚合根,并且具有许多EntityB实体。 EntityB具有许多EntityC实体。 EntityC正在引用EntityB(原始父级)和EntityA(创建EntityC时为null)。
有一次,我想将EntityA设置为"新父母" EntityC,所以在EntityC中,我将原始EntityB父级的引用设置为null,并将设置对EntityA的引用(之前为null)。
这是"动态实体父母"想法与DDD兼容吗?
答案 0 :(得分:0)
设计聚合时的一个主要考虑因素是将其视为一致性边界。因此,当您考虑是否应该表达组成实体之间的各种关系时,请考虑这些关系是否是实现行为所必需的,以及在执行所述行为后是否需要保持一致。 DDD并没有规定对象模型本身的实现,因为它决定了对行为和事务一致性的关注。同样,很多时候,实现关系以支持查询场景。在这些情况下,不要污染聚合,而是创建单独的read-model。另外,请查看effective aggregate design。
答案 1 :(得分:0)
您的想法绝对与DDD兼容。但是,如何实施它很重要。
正如eulerfx指出的那样,总体设计与此相关。但我确实怀疑你可能有某种形式的分类结构。这意味着该结构的表示可能成为一组新的实体/聚合。或者,如果不是完整的子域,则可能具有由实体中的值对象表示的分类。但是如果你发现自己处于那个位置,那么对聚合中其他聚合的引用就会有点红旗。