2017-07-28 107 views
0

我正在使用实体框架与Id属性执行一对多关系数据库。INSERT语句与FOREIGN KEY冲突。实体包括ForeignKey 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: The INSERT statement conflicted with the FOREIGN KEY constraint "FK_dbo.PersonModel_dbo.TeamModel_TeamRefId". The conflict occurred in database "Tournament2", table "dbo.TeamModel", column 'TeamId'.

+0

具有您使用的TeamRefId的团队在TeamModel表中不存在。由于您将FKey添加到引用该表/字段的PersonModel,现在需要创建一个Person。 –

+0

@JacobH那么,我应该以某种方式为teamrefid默认值吗? – Zackk

+1

默认值意味着每个玩家属于同一个团队吗?这对你的数据是否正确? –

回答

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; } 
} 
相关问题