C# 如何处理持有相同数据引用的两个单独的聚合根?

C# 如何处理持有相同数据引用的两个单独的聚合根?,c#,nosql,domain-driven-design,C#,Nosql,Domain Driven Design,在为体育赛事建模的域模型中,应该如何处理此场景,特别是在使用无sql文档数据库保存数据的上下文中 系统中的主要实体是赛季、锦标赛组、锦标赛、锦标赛阶段、比赛、球员 赛季-赛季有开始日期、结束日期、有序的球员集合和锦标赛集合 锦标赛组-锦标赛组包含锦标赛的集合,每个锦标赛只能属于一个锦标赛组。我不确定这是否应该是一个实体 锦标赛-锦标赛有开始日期、结束日期、有序的玩家集合和有序的锦标赛阶段集合 锦标赛阶段-锦标赛阶段具有有序的比赛集合。不确定这是否应该是一个实体,因为它只是一种在锦标赛中分组比赛的

在为体育赛事建模的域模型中,应该如何处理此场景,特别是在使用无sql文档数据库保存数据的上下文中

系统中的主要实体是赛季、锦标赛组、锦标赛、锦标赛阶段、比赛、球员

赛季-赛季有开始日期、结束日期、有序的球员集合和锦标赛集合

锦标赛组-锦标赛组包含锦标赛的集合,每个锦标赛只能属于一个锦标赛组。我不确定这是否应该是一个实体

锦标赛-锦标赛有开始日期、结束日期、有序的玩家集合和有序的锦标赛阶段集合

锦标赛阶段-锦标赛阶段具有有序的比赛集合。不确定这是否应该是一个实体,因为它只是一种在锦标赛中分组比赛的方式

比赛-比赛包含球员的集合

这让我感到困惑,因为到目前为止,我会说总根是赛季,但我不知道球员适合这个模型,我可能也没有正确处理锦标赛组

需要生成一个赛季、锦标赛组和球员的统计数据,例如赛季得分最高的球员、锦标赛组得分最高的球员以及他在哪个锦标赛、赛季或锦标赛组得分最高的球员


为了获得这些数据,我本以为球员实体必须保存对锦标赛和比赛的引用,但这些引用在赛季中也会有所帮助。这可以接受吗?如果一个聚合根中的数据在另一个聚合根中发生变化,那么更新该聚合根中的数据的最佳策略是什么?

这不是一个容易回答的问题,因为您描述的大部分内容都是域的词汇表,其中包含行为的提示(但不重视该行为)。如果你写下你的模型必须支持的每一个场景,然后通过尝试实现每一个场景来创建、挑战和发展这个模型,你最终会得到与上面描述完全不同的结果。可能有多个模型,每个模型解决不同的方面。聚合是围绕一组实体和值对象定向的行为集群,而不是作为试图将行为改进为的名词的实体

如果我要给你任何建议,分开管理赛季,比赛等。。。从实际记录赛季期间发生的事情,从报告赛季期间或赛季结束时你可能想要得到的任何类型的统计数据