我在项目中使用DDD。
ProductCat[Id , Name]
Product[Id, ProductCatId, name]
ProductImages[Id,ProductId,url]
Product
和ProductImages
之间的关系是正确的或 ProductImages
是值对象所以必须在此{{1}中实现} [ProductId,url] ProductImages
,ProductCat
,Product
中的聚合根是什么?我知道聚合外部的所有引用必须来自聚合根,并且认为ProductImages
是聚合根,因为它位于层次结构中的更高级别。
答案 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,因为它已经是产品的一部分。