如何引用不同根的叶子?

时间:2012-07-10 08:15:06

标签: domain-driven-design aggregateroot

我有这个设计:

产品有很多定价网格,网格有很多定价期

Product
 Id
 Name
 Grids[]
  Name
  Periods[]
   Price
   Start
   End

现在我有特别优惠,当卖家创建报价(例如-10%)时,他可以选择将其应用于产品甚至网格(例如他不想将报价应用于网格“www.apartnerwebsite.com”,但他更喜欢将它应用于网格“我的网站”。)

Offer
 OfferId
 OfferName
 ProductIds[]
 GridIds[] //??

但是我不能这样做,因为没有网格ID,我不能从根聚合中引用Leaf。

1 个答案:

答案 0 :(得分:1)

在我看来,Grid是它自己的聚合根的竞争者。如果Grid构成Offer的一部分以及Product,那么将它作为聚合根对我来说是有意义的。产品与产品优惠将通过ID引用其网格。

正如我在评论中提到的,你不应该担心会有大量的小聚合。这实际上是一件好事,正如弗农在他的优秀文章中所记录的那样:http://dddcommunity.org/library/vernon_2011