繁体   English   中英

实体框架与fluentapi的多个相同类型的可选关系

[英]Entity Framework multiple optional relationships of same type with fluentapi

我有一个具有两个可选字段,类型为“ Team”的“ TeamOne”和类型为“ Team”的“ TeamTwo”的类。 显然,团队可以不分配给游戏而存在,并且当游戏被删除时也不能删除,反之亦然。

现在,我尝试以这种方式设置关系:

HasOptional(x => x.TeamOne).WithOptionalDependent(x => x.Game).WillCascadeOnDelete(false);
HasOptional(x => x.TeamTwo).WithOptionalDependent(x => x.Game).WillCascadeOnDelete(false);

我遇到了错误

指定的架构无效。 错误:由于类型“ Infrastructure.DAL.Team”不可用,因此未加载关系“ Infrastructure.DAL.Match_TeamOne”。

我在这里做错什么了吗?

编辑:1场比赛:1 TeamOne和1 TeamTwo TeamOne和TeamTwo被分配给1个游戏最大

您正在尝试用一个反端创建两个关系。 Game.TeamOneGame.TeamTwo都与Team.Game有关。 但是,当来自TeamTeam.Game应该引用哪个Game TeamOneTeamTwo吗? 那里含糊不清。 您需要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)

...其中HomeGamesAwayGamespublic (virtual) ICollection<Game>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM