如何确定根聚合何时包含太多的一对多关系?

时间:2013-05-06 01:31:05

标签: c# domain-driven-design ddd-repositories

我真的在努力解决以下问题:

假设我有一个用户聚合。用户可以创建1个以上的群组,消息,朋友,照片画廊等。现在看来,群组,消息,朋友,照片库应该各自都在他们自己的聚合分组中。创建包含IList<>的用户实体似乎不合逻辑。这些部分中的每一部分的属性,而不是只有群组,消息,朋友,照片画廊等的用户属性。从DDD的角度来看哪种方法最有意义?我也在考虑实体水合作用,并且根据需要获取组,消息等似乎更有意义,而不是从用户实体中检索所有内容。处理此方案的推荐方法是什么?

1 个答案:

答案 0 :(得分:4)

即使不了解您的特定业务领域,将User类作为一种神聚合与其下的所有其他内容一起听起来也是错误的。

将您的实体分组为具有聚合根的较大实体,完全取决于您的业务运作方式。例如,PhotoGallery可以是一个聚合根,其下面有许多Photo个对象,或者PhotoGalleryPhoto都可以是单独的聚合根。

例如,您可能经营一家照片开发公司,照片总是以完整的PhotoGallery(1个聚合根)收集,处理和处理。

或者您可以运行社交网站,其中Photo可以共享和使用,而无需加载整个图库(2个聚合根)。

因此,这取决于您以及您的业务领域所要求的内容。你可以随时吮吸它,以某种方式尝试并看看它是如何进行的,然后再进行重构。