我正在嘗試為具有以下類的物體配置兩次一對一關系。
public class Team
{
...
public virtual TeamGraphic TeamLogo { get; set; }
public virtual TeamGraphic TeamPlayer { get; set; }
}
public class TeamGraphic
{
...
public virtual Team Team { get; set; }
}
TeamGraphics 將是影像資料。
在資料背景關系類中
modelBuilder.Entity<Team>(t =>
{
t.HasOne<TeamGraphic>(g => g.TeamLogo)
.WithOne(t => t.Team);
t.HasOne<TeamGraphic>(g => g.TeamPlayer)
.WithOne(t => t.Team);
});
所以用文字來說。一個團隊可以有一個徽標,一個團隊可以有一個球員(圖片)。
但是當我嘗試進行遷移時,出現錯誤:
Cannot create a relationship between 'TeamGraphic.Team' and 'Team.TeamPlayer' because a
relationship already exists between 'TeamGraphic.Team' and 'Team.TeamLogo'. Navigations can
only participate in a single relationship. If you want to override an existing relationship
call 'Ignore' on the navigation 'Team.TeamPlayer' first in 'OnModelCreating'.
這完全有可能嗎?
uj5u.com熱心網友回復:
完整解釋錯誤:“導航只能參與單一關系。” 這意味著你應該創建第二Team個TeamGraphic
public class TeamGraphic
{
...
public virtual Team TeamFromTeamLogo { get; set; }
public virtual Team TeamFromTeamPlayer { get; set; }
}
modelBuilder.Entity<Team>(t =>
{
t.HasOne<TeamGraphic>(g => g.TeamLogo)
.WithOne(t => t.TeamFromTeamLogo);
t.HasOne<TeamGraphic>(g => g.TeamPlayer)
.WithOne(t => t.TeamFromTeamPlayer);
});
它有道理。如果您只有一個反向導航,TeamGraphic.Team, 是不明確的。“哪一個”?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/533352.html
標籤:C#。网实体框架核心关系
上一篇:在C#中查找物件串列的重復項
