0

我已经阅读 StackOverflow 数周了,但我仍然无法确定我的 DDD Aggregate Root 选择是否正确。长话短说——这里是实体。这是关于足球/足球领域的:

联赛、球队和比赛

每支球队可以通过比赛参加一个或多个联赛(即英超联赛、欧洲冠军联赛)。每支球队在某个联赛中都有主场比赛客场比赛。场比赛都有一个联赛主队客队

每个联赛都有很多比赛

我认为我需要有两个存储库——LeagueRepository,我可以在其中获取特定联赛在特定时期内的所有比赛。通过这个存储库,我将在进行一轮比赛后自动更新数据库,并相应地记录结果。

我还需要一个 TeamRepository,我可以在其中获取不同联赛中某支球队在不同时间段内的所有比赛。这是出于统计目的,即给我过去 10 年在英超联赛中的所有利物浦主场比赛。是的,你猜对了——这是关于投注机会和赔率的计算:)

长话短说——我的领域是足球/足球世界。那些关注这项运动的人都知道这些细节以及联赛、球队和比赛是什么。

是否可以有两个单独的聚合根 - 联赛和团队。我可以通过其中任何一个达到给定的比赛。DDD 设计可以吗?

或者我应该引入一个名为Sport的新实体并使其成为唯一的聚合根。那么一项运动将有许多联赛和许多球队。

我正在使用 EF 代码优先方法,并且正在尝试识别我的存储库和聚合根。如果您正在设计这个数据库,您将如何构建这三个实体——联赛、团队和比赛。当然,我们在这里过度简化了事情。

您的所有想法和意见将不胜感激。

提前致谢。

4

2 回答 2

1

对我来说,运动似乎是在浪费一个概念。如果您不需要建模,足球,棒球,篮球等,那么我想运动模型将大部分是空的并且浪费空间。如果您从团队和联盟的角度来考虑您的程序,那么我会坚持使用这两个存储库。除了只有一个根之外,您认为 Sport 存储库有什么优势?

于 2013-09-23T19:33:49.857 回答
1

您应该阅读三份白皮书,以更好地了解您应该如何选择聚合:http ://dddcommunity.org/library/vernon_2011/

于 2013-09-24T11:31:55.627 回答