DDD哪个是根聚合根?

Bar*_*xto 3 domain-driven-design aggregateroot

许多例如订单和订单行都是有道理的,例如:

OrderAR包含OrderLines Customer在一个AR包含Orders.

问题是,包含的AR是什么Customer?我猜它可能像"商店".

所以shop.AddCustomer(customer)......

但是,如何去商店?如果它是AR(实体),它有一个id,所以shop.GetById(shopId).如果我只有一个商店,这如何与持久性一起工作?

我应该有一张桌子(商店)吗? Shop是一个内存中的对象,有一个集合Customers

the*_*Dmi 6

那你错了.聚合不包含其他聚合!他们只能通过ID引用它们.

聚合是一组密切相关的实体和值对象.聚合形成了它们周围的一致性边界.该聚合根是在骨料是全局寻址根实体.所以在你的例子中,OrderOrderLines,Order确实可能是AR.

Customer另一方面,Orders如果它是一个单独的聚合,则只能通过ID 引用.

要检索聚合,通常使用存储库.通过指定聚合的ID或其他一些合适的搜索参数,可以通过存储库加载聚合.