首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AggregateRoot是否应该包含其他AggregateRoot的集合?

AggregateRoot是否应该包含其他AggregateRoot的集合?
EN

Stack Overflow用户
提问于 2017-06-12 09:18:26
回答 2查看 46关注 0票数 0

为了研究DDD,我阅读了这个有趣的话题,并发现了一个新的想法,即作者说“关于没有在Product中创建一个‘ProductReviews’集合的论点”。因为“这两个实体之间没有真正的不变量”

ICollection<ProductReview>类中没有Product。那么,问题是

  1. 它与DDD兼容吗?
  2. 这样做的好处和缺点是什么?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-12 12:02:52

它与DDD兼容吗?

是的,将ProductReviews逻辑集合的元素分离为产品聚合之外的聚合与DDD兼容。

也就是说,当以这种方式分离事物时,通常不会尝试坚持事务级联删除,如您链接的示例所示。

这样做的好处和缺点是什么?

通常有两个优点

如果对模型的两个不同部分的更改不需要同步--也就是说,永远不需要在一起更改两个部分以保持不变--那么将这些部分建模为单独的聚合有助于使分离变得显式(因此更容易推理,等等)。

将模型分解成单独的聚合支持并行工作,这意味着我们可以减少进行更改所需的协调量。

如果模型的两个不同部分确实彼此分离,您可以使用完全不同的技术来存储它们。

另一方面,它的缺点是,当您稍后发现您需要协调对两个不同聚合的更改时,事情就会变得一团糟。在这一点上,您真正拥有的是数据模型中的单个“逻辑”聚合,它已经被分解为域模型中具有协调责任的多个聚合。

票数 1
EN

Stack Overflow用户

发布于 2017-06-12 13:02:02

来自cqrs.nu

--我知道聚合是事务边界,但是我确实需要在同一个事务中事务地更新两个聚合。我该怎么办? 你应该重新考虑以下几点:

  • 你的总界限。
  • 每个集合的责任。
  • 在阅读方面或在传奇中你能做些什么?
  • 域的实际非功能需求。
  • 如果您编写了一个解决方案,其中两个或两个以上的聚合是事务耦合的,则没有理解聚合。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44495741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档