【发布时间】:2018-07-01 18:11:38
【问题描述】:
我有一个名为 SportTeams 的关联表:
public class SportTeam
{
int SportId;
int TeamId;
Sport Sport;
Team Team
}
public class Sport
{
ICollection<SportTeam> SportTeams;
}
public class Team
{
ICollection<SportTeam> SportTeams;
}
我通过 fluent api 将其标记为关联表
modelBuilder.Entity<SportTeam>().HasKey(q => new { q.SportId,q.TeamId }); // set the primary key of the table
modelBuilder.Entity<SportTeam>().HasRequired(s => s.Team).WithMany(t => t.SportTeams).HasForeignKey(s => s.TeamId);
modelBuilder.Entity<SportTeam>().HasRequired(s => s.Sport).WithMany(s => s.SportTeams).HasForeignKey(s => s.SportId);
现在我需要使用关联表SportTeams 创建一对多。让我们称该表为Matches。
public class Matches
{
int Id;
int SportTeamId;
SportTeam SportTeam;
}
public class SportTeam
{
int SportId ;
int TeamId;
Sport Sport;
Team Team;
ICollection<Match> Matches;
}
我回到 fluent api 对这个一对多进行更改。
我说
modelBuilder.Entity<SportTeam>().HasMany(st => st.Matches).WithRequired(matches => matches.SportTeam).HasForeignKey(m => m.SportTeamId).WillCascadeOnDelete(false);
我收到一个错误:
关系约束中的从属角色和主要角色中的属性数量必须相同。
我相信这个错误表明我的 sportTeam PK 是一个复合键,在我的 HasForeignKey 部分中,我只指定了一个要连接的 FK。
遇到这种情况我该怎么办?
【问题讨论】:
标签: c# asp.net-web-api entity-framework-6