![](/img/trans.png)
[英]How do I define Foreign Key Optional Relationships in FluentAPI/Data Annotations with the Entity Framework?
[英]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.TeamOne
和Game.TeamTwo
都与Team.Game
有关。 但是,当来自Team
, Team.Game
应该引用哪个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>
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.