我有一个有两个可选字段的课程" TeamOne"类型"团队"和#34; TeamTwo"类型"团队"。 团队显然可以存在而不会被分配给游戏,并且在游戏被删除时不会被删除,反之亦然。
现在我正试图以这种方式设置关系:
HasOptional(x => x.TeamOne).WithOptionalDependent(x => x.Game).WillCascadeOnDelete(false);
HasOptional(x => x.TeamTwo).WithOptionalDependent(x => x.Game).WillCascadeOnDelete(false);
我遇到了错误
指定的架构无效。错误:关系' Infrastructure.DAL.Match_TeamOne'未加载,因为类型' Infrastructure.DAL.Team'不可用。
我在这里做错了吗?
编辑: 1场比赛:1场TeamOne和1场TeamTwo TeamOne和TeamTwo被分配到1个游戏最大
答案 0 :(得分:2)
您尝试使用一个反向结束创建两个关系。 Game.TeamOne
和Game.TeamTwo
都与Team.Game
相关。但是,来自Team
时,Game
应该Team.Game
提到哪个?它是TeamOne
或TeamTwo
的那个?那里有一种模棱两可的含义。您需要第Game
类型的第二个属性才能与TeamTwo
绑定。这可行:
HasOptional(x => x.TeamOne).WithOptionalDependent(x => x.HomeGame).WillCascadeOnDelete(false);
HasOptional(x => x.TeamTwo).WithOptionalDependent(x => x.AwayGame).WillCascadeOnDelete(false);
但我不认为这种模式是对的。一个团队真的只有一个Game
吗?这是一个有趣的比赛模式!我认为球队可以参加很多比赛。游戏,映射应如下所示:
HasOptional(x => x.TeamOne).WithMany(x => x.HomeGames)
.WillCascadeOnDelete(false)
HasOptional(x => x.TeamTwo).WithMany(x => x.AwayGames)
.WillCascadeOnDelete(false)
...其中HomeGames
和AwayGames
为public (virtual) ICollection<Game>
。