聚合根选择(适用于所有足球/足球迷)

时间:2013-09-23 12:39:41

标签: entity-framework database-design domain-driven-design ddd-repositories aggregateroot

我一直在阅读StackOverflow几周,但我还是无法确定我的DDD Aggregate Root选择是否正确。长话短说 - 这是实体。这是关于足球/足球领域:

联赛,团队和比赛

每个团队可以通过匹配(即英超联赛,欧洲冠军联赛)参加一个或多个联赛。每个团队在某个联盟中都有 HomeMatches AwayMatches 。每个匹配都有联盟 HomeTeam AwayTeam

每个联盟都有很多匹配

我想我需要有两个存储库 - LeagueRepository我可以在一段时间内获得某个联盟的所有比赛。通过这个存储库,我将在播放一轮比赛时自动更新数据库,我会相应地记录结果。

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

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

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

或者我应该引入一个名为 Sport 的新实体,并将其作为唯一的聚合根。然后一个运动会有很多联赛和很多球队。

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

非常感谢您的所有想法和评论。

提前致谢。

2 个答案:

答案 0 :(得分:1)

对我而言,体育似乎浪费了一个概念。如果你不需要模型,足球,棒球,篮球等,那么我想运动模型大多是空的,浪费空间。如果你从团队和leauges的角度来考虑你的程序,那么这就是我坚持的两个存储库。你看到其他只有一个根的体育资源库有什么好处?

答案 1 :(得分:1)

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

相关问题