如何引用来自不同根目录的叶子?

问题描述:

我有这样的设计:如何引用来自不同根目录的叶子?

的产品有很多定价格,一格有许多的定价期

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

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

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

但我不能这样做,因为没有网格ID,我不能从一个根集合引用叶。

+0

您是否考虑过将“网格”作为聚合根?然后让产品和优惠参考网格的ID? – 2012-07-10 08:36:00

+0

这不就是一种解决方法吗?一个网格本身不存在吗?我已经考虑过了,但它让我感到害怕,从长远来看,我只会聚合根源。 – 2012-07-10 08:58:08

+0

嗯,我不知道你的全部要求,但设计小聚合不是一种解决方法。阅读这些关于这个主题的优秀**文章(第一个最相关):http://dddcommunity.org/library/vernon_2011。如果一个** Grid **是** Offer **和** Product **的一部分,那么将它作为它自己的一个聚合是合理的。 – 2012-07-10 09:02:52

在我看来,网格是一个竞争者是自己的聚合根。如果一个Grid是一个Offer和一个Product的组成部分,那么使它成为一个聚合根就是有意义的。产品&优惠将通过ID引用其网格。

正如我在我的评论中提到的那样,您不应该担心会有大量的小聚合。这实际上是一件积极的事情,因为弗农在他的优秀文章中提供了文档:http://dddcommunity.org/library/vernon_2011

+0

谢谢我会看看你的文章。是否有任何技术/工具可以毫无痛苦地将叶子迁移到聚合根目录? – 2012-07-10 09:32:58

+0

不是我所知道的......但这是引用埃文斯先生的“更深入洞察力”的正常过程。 – 2012-07-10 09:34:50

+0

我刚刚打印了这篇文章,谢谢。 – 2012-07-10 09:39:41