[英]Two one-to-one relationships in EF core
我正在尝试为具有以下类的实体配置两次一对一关系。
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 将是图像数据。
在数据上下文中 class
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'.
这完全有可能吗?
完整解释错误: “导航只能参与单一关系。” 这意味着您应该在TeamGraphic
上创建第二个Team
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
是不明确的。 “哪一个”?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.