C# 确定MyProducts、易趣和亚马逊物品中的总根目录

C# 确定MyProducts、易趣和亚马逊物品中的总根目录,c#,dns,domain-driven-design,aggregate,C#,Dns,Domain Driven Design,Aggregate,我应该让清单成为MyProduct聚合的一部分,还是让它们成为聚合根 如果我把它作为MyProduct聚合的一部分,那么我就失去了独立于MyProduct保存列表的能力。另一方面,我不明白如果没有MyProduct,我怎么会有一个列表,因此应该是MyProduct聚合的一部分 易趣和亚马逊的物品是否应该是一个有价值的物品或实体。根据我对电子商务产品目录的经验,通常每个产品都有多个物品,例如代表不同产品的物品。最终,清单和相应的产品都应该是聚合的。这并不意味着您不能强制执行列表必须与产品关联的约束

我应该让清单成为MyProduct聚合的一部分,还是让它们成为聚合根

如果我把它作为MyProduct聚合的一部分,那么我就失去了独立于MyProduct保存列表的能力。另一方面,我不明白如果没有MyProduct,我怎么会有一个列表,因此应该是MyProduct聚合的一部分


易趣和亚马逊的物品是否应该是一个有价值的物品或实体。

根据我对电子商务产品目录的经验,通常每个产品都有多个物品,例如代表不同产品的物品。最终,清单和相应的产品都应该是聚合的。这并不意味着您不能强制执行列表必须与产品关联的约束。这只意味着您将使用标识引用来表示关系,而不是直接对象引用。清单上的行为通常独立于相应产品上的行为。如果存在依赖项,则可以最终以一致的方式传播它


查看更多信息。

这取决于它是什么类型的列表。你能举个例子吗?在易趣上,我们有不同的列表(多个MyProduct对一个列表),但一个MyProduct也可以在多个市场中列出(一个MyProduct对多个列表)因此,我认为它们之间的关系是多对多的。您认为我应该将从我的模型映射到易趣和亚马逊模式文件中定义的列表的逻辑放在哪里。这应该是域逻辑还是基础结构逻辑。这应该在组织特定的模块中。因此,您将拥有一个amazon模块,该模块使您的本地域模型适应amazon。用DDD的说法,这称为ACL-反腐败层。