INSERT语句与FOREIGN KEY冲突。实体包括ForeignKey Id属性

时间:2017-07-28 19:11:14

标签: sql-server asp.net-mvc entity-framework

我正在使用具有Id属性的实体框架执行一对多关系数据库。

我有两个模型类:

public class PersonModel
{
    [Key]
    public int PersonId { get; set; }

    public string NickName { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }

        public int TeamRefId { get; set; }

    [ForeignKey("TeamRefId")]
    public virtual TeamModel TeamModel { get; set; }
}

public class TeamModel
{
    public TeamModel()
    {
        TeamMembers = new List<PersonModel>();
        this.Tournaments = new HashSet<TournamentModel>();
    }

    [Key]
    public int TeamId { get; set; }

    public string TeamName { get; set; }

    public virtual ICollection<PersonModel> TeamMembers { get; set; }
    public virtual ICollection<TournamentModel> Tournaments { get; set; }

    public virtual MatchUpEntryModel MatchupEntry { get; set; }
    public virtual MatchUpModel Matchup { get; set; }
}

当我尝试创建新的Person实体时,我收到此错误:

  

SqlException:INSERT语句与FOREIGN KEY约束“FK_dbo.PersonModel_dbo.TeamModel_TeamRefId”冲突。冲突发生在数据库“Tournament2”,表“dbo.TeamModel”,列'TeamId'。

1 个答案:

答案 0 :(得分:0)

制作外键人员模型可以解决你的问题 请注意,在您创建团队

之后稍后修改它之前,创建的人将没有团队
 public class PersonModel
 {
  [Key]
  public int PersonId { get; set; }

public string NickName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }

public int? TeamRefId { get; set; }

[ForeignKey("TeamRefId")]
public virtual TeamModel TeamModel { get; set; }
}