在ProductCategory,Product,ProductImages之间聚合根

时间:2013-11-26 06:42:04

标签: c# domain-driven-design aggregation aggregateroot

我在项目中使用DDD。

ProductCat[Id , Name]
Product[Id, ProductCatId, name]
ProductImages[Id,ProductId,url]
  1. 我的ProductProductImages之间的关系是正确的 ProductImages值对象所以必须在此{{1}中实现} [ProductId,url]
  2. ProductImagesProductCatProduct中的聚合根是什么?
  3. 我知道聚合外部的所有引用必须来自聚合根,并且认为ProductImages是聚合根,因为它位于层次结构中的更高级别。

2 个答案:

答案 0 :(得分:2)

这在某种程度上取决于您的Bounded Context以及您将如何处理ProductImages。

如果ProductImage始终只发生在产品的上下文中,例如简单的购物网站,那么它可能是产品AR的一部分。如果您将ProductImage视为BC中产品的真实属性,它甚至可能是ValueObject,因为产品的两个相等图像(如同#34;相同像素")可能被视为可互换。如果不了解您的BC要求,将ProductImage作为Product中的实体(参见@ Meta-Knight的答案)似乎是合理的,这可以让您谈谈产品的特定图像(例如"主图像& #34;,"替代图像1","替代图像2",...)。

如果您要在自己的设置上使用ProductImages,例如,在显示某些用户提交到您网站的最新ProductImages的页面上,则应该是他们自己的AggregateRoot。因此,首先尝试为您的域建模,然后识别您的AR。

答案 1 :(得分:0)

我看到两个聚合根:ProductCat和Product。 ProductImages将成为产品聚合的一部分,因为它特定于产品。

您的ProductImages不一定需要ID,因为它不是聚合根。并且ID只能在聚合内部唯一。它也不一定需要引用ProductId,因为它已经是产品的一部分。

相关问题