Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何确定根聚合何时包含过多的一对多关系?_C#_Domain Driven Design_Ddd Repositories - Fatal编程技术网

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

C# 如何确定根聚合何时包含过多的一对多关系?,c#,domain-driven-design,ddd-repositories,C#,Domain Driven Design,Ddd Repositories,我真的很难应付以下情况: 假设我有一个用户聚合。用户可以创建1+组、消息、朋友、照片库等。现在看来,组、消息、朋友、照片库都应该在各自的聚合分组中。创建一个用户实体,其中每个部分都包含一个IList属性,而不仅仅是为组、消息、朋友、照片库等创建一个用户属性,这似乎不合逻辑。从DDD的角度来看,哪种方法最有意义?我也在考虑实体水合作用,根据需要获取组、消息等,而不是从用户实体中检索所有内容似乎更有意义。处理这种情况的推荐方法是什么?即使不太了解您的特定业务领域,将用户类与它下面的所有内容作为一种上

我真的很难应付以下情况:


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

即使不太了解您的特定业务领域,将用户类与它下面的所有内容作为一种上帝聚合,听起来也非常错误

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

例如,您可以运行一家照片开发公司,在该公司中,照片始终作为完整的PhotoGallery 1聚合根进行收集、处理和处理

或者你可以运行一个社交网站,在那里,照片可以共享并普遍使用,而无需加载整个gallery 2聚合根


因此,这实际上取决于您和您的业务领域。你总是可以把它吸进去看看,用一种方法试试看,然后再重构。

即使不太了解你的特定业务领域,把用户类作为一种上帝,把它下面的一切都聚合起来,这听起来确实是非常错误的

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

例如,您可以运行一家照片开发公司,在该公司中,照片始终作为完整的PhotoGallery 1聚合根进行收集、处理和处理

或者你可以运行一个社交网站,在那里,照片可以共享并普遍使用,而无需加载整个gallery 2聚合根


因此,这实际上取决于您和您的业务领域。你可以一直吮吸它,然后看看,尝试一种方法,看看它是如何进行的,然后再重构。

这会是这样的:用户实体不会包含其他聚合的任何IList属性,但其他聚合(即组、消息、朋友等)会包含用户实体的属性吗?对我来说,这似乎在组织上最有意义,因为我没有看到用户从用户配置文件创建消息、组等。其他每个聚合都与用户界面上的不同部分相关。聚合根很可能具有其他实体和值对象的集合。对于像friend这样的聚合,friend引用一个用户可能会很好,强耦合表示friends始终是一个用户的朋友,但是对于消息这样的对象,将消息与用户耦合得太强,如果消息可能属于远程系统、游戏、,或您域中的其他实体等。是否如下所示:用户实体将不包含其他聚合的任何IList属性,但其他聚合(即组、消息、朋友等)将包含用户实体的属性?对我来说,这似乎在组织上最有意义,因为我没有看到用户从用户配置文件创建消息、组等。其他每个聚合都与用户界面上的不同部分相关。聚合根很可能具有其他实体和值对象的集合。对于像friend这样的聚合,friend引用一个用户可能会很好,强耦合表示friends始终是一个用户的朋友,但是对于消息这样的对象,将消息与用户耦合得太强,如果消息可能属于远程系统、游戏、,或域中的其他实体等。