实体框架 - 如何修复“违反PRIMARY KEY约束”错误?

时间:2016-07-14 14:49:08

标签: c# entity-framework code-first

我有一个班级Team HomeTeam Guest另一个班级。

public class Match
{
    [DataMember]
    public Guid Id { get; set; }
    [DataMember]
    public virtual Tour Tour { get; set; }

    [DataMember]
    public DateTime DateMatch { get; set; }

    [DataMember]
    public virtual Team Home { get; set; }
    [DataMember]
    public virtual Team Guest { get; set; }

    [DataMember]
    public virtual Result Result { get; set; }
}

当我尝试添加Match时:

  

违反PRIMARY KEY约束'PK_dbo.Teams'。无法插入   对象'dbo.Teams'中的重复键。重复的键值是   (06f67648-f904-4a4e-8ceb-33c204d8267c)。声明一直如此   终止。

我不知道如何添加匹配Teams已经存在

1 个答案:

答案 0 :(得分:0)

正如@DevilSuichiro正确提到的那样,您无需填写导航属性。为所有导航属性添加外键,如下所示:

public virtual int HomeId { get; set; }

[DataMember]
[ForeignKey("HomeId")]
public virtual Team Home { get; set; }

然后,当您需要添加新的Match时,只需填写HomeId并将Home属性设置为null,这样就不会将其重新添加到数据库中。