Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
Entity framework 聚合根选择(适用于所有足球/足球迷)_Entity Framework_Database Design_Domain Driven Design_Ddd Repositories_Aggregateroot - Fatal编程技术网

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

Entity framework 聚合根选择(适用于所有足球/足球迷),entity-framework,database-design,domain-driven-design,ddd-repositories,aggregateroot,Entity Framework,Database Design,Domain Driven Design,Ddd Repositories,Aggregateroot,我已经阅读StackOverflow好几个星期了,但我仍然无法决定我的DDD聚合根选择是否正确。长话短说——以下是实体。关于足球/足球领域: 联赛、球队和比赛 每个球队可以参加一个或多个联赛,参加比赛(即英超联赛、欧洲冠军联赛)。在某个联赛中,每个队都有主场比赛和客场比赛。每场比赛都有联赛、主队和AwayTeam 每个联赛都有许多比赛 我想我需要有两个存储库——LeagueRepository,在这里我可以获得某个联赛在某个时期的所有比赛。通过这个存储库,当一轮比赛结束时,我将自动更新数据库,并

我已经阅读StackOverflow好几个星期了,但我仍然无法决定我的DDD聚合根选择是否正确。长话短说——以下是实体。关于足球/足球领域:

联赛、球队和比赛

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

每个联赛都有许多比赛

我想我需要有两个存储库——LeagueRepository,在这里我可以获得某个联赛在某个时期的所有比赛。通过这个存储库,当一轮比赛结束时,我将自动更新数据库,并相应地记录结果

我还需要一个团队存储库,在那里我可以获得不同联赛中某支球队在不同时间段的所有比赛。这是为了统计,也就是说,给我过去10年英超联赛中所有利物浦主场比赛的情况。是的,你猜对了——这是关于赌博机会和赔率的计算:)

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

有两个独立的聚合根可以吗?联盟和团队。我可以通过他们中的任何一个达到给定的比赛。这与DDD设计一致吗

或者我应该引入一个名为Sport的新实体,并使其成为唯一的聚合根。然后一项运动会有许多联盟和许多队

我使用EF代码优先的方法,并试图识别我的存储库和聚合根。如果你在设计这个数据库,你会如何构建这三个实体——联盟、球队和比赛。当然,我们在这里过于简化了

非常感谢您的所有想法和意见


提前感谢。

对我来说,运动似乎是一种概念上的浪费。如果你不需要模特,足球,棒球,篮球等等,那么我想运动模特大部分都是空的,浪费空间。如果你从团队和联盟的角度来考虑你的程序,那么这就是我坚持使用的两个存储库。对于一个体育存储库来说,你认为只有一个根有什么好处?

为了更好地理解如何选择聚合,你应该阅读三份白皮书:

我不认为需要保护不变量。我担心在这种情况下使用DDD有点过度设计。当然,我过度简化了条件。我不知道将来会出现什么新的实体,所以我想从正确的方法开始。