2

我有几个(希望是)关于域驱动设计中聚合根的简单问题:

  1. 可以将聚合根作为另一个聚合根的属性吗?
  2. 是否可以在两个或多个聚合根中拥有给定实体?

我的最后一个问题涉及更多。我有一个网站,其中包含一些真正属于“网站”聚合根的实体。它们是“新闻”、“产品”和“用户”。数据库中没有“网站”表,但“网站”似乎是这三个实体的良好聚合根。这通常是如何实现的?

谢谢!

4

1 回答 1

1

您是否有跨越整个网站的任何一致性规则(关于多个新闻产品和用户)?如果不是,这些实体(新闻、产品、用户)是您聚合根的良好候选者。

聚合根的主要功能是提供一致性和事务语义边界。

回答你的问题:

  1. 是的,只要在包含 AR 的任何操作期​​间不修改此引用的聚合根即可。这与一致性边界有关:跨多个聚合的操作不能保证产生一致的结果,因此应该避免它们

  2. 不,一个实体(不是 AR)只能是一个聚合的一部分。

于 2010-05-20T05:02:06.830 回答