![](/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.