Entity Framework - 如何修复 "Violation of PRIMARY KEY constraint" 错误?
Entity Framework - How to fix the "Violation of PRIMARY KEY constraint" error?
我有 class,其中 Team Home
和 Team Guest
存在另一个 class。
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
:
Violation of PRIMARY KEY constraint 'PK_dbo.Teams'. Cannot insert
duplicate key in object 'dbo.Teams'. The duplicate key value is
(06f67648-f904-4a4e-8ceb-33c204d8267c). The statement has been
terminated.
我不知道如何在 Teams
已经存在的地方添加匹配项
正如@DevilSuichiro 正确提到的那样,您不需要填写导航属性。像这样为所有导航属性添加外键:
public virtual int HomeId { get; set; }
[DataMember]
[ForeignKey("HomeId")]
public virtual Team Home { get; set; }
然后当你需要添加一个新的 Match
时,只需填充 HomeId
并将 Home
属性 设置为 null
这样它就不会被重新添加到数据库中。
我有 class,其中 Team Home
和 Team Guest
存在另一个 class。
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
:
Violation of PRIMARY KEY constraint 'PK_dbo.Teams'. Cannot insert duplicate key in object 'dbo.Teams'. The duplicate key value is (06f67648-f904-4a4e-8ceb-33c204d8267c). The statement has been terminated.
我不知道如何在 Teams
已经存在的地方添加匹配项
正如@DevilSuichiro 正确提到的那样,您不需要填写导航属性。像这样为所有导航属性添加外键:
public virtual int HomeId { get; set; }
[DataMember]
[ForeignKey("HomeId")]
public virtual Team Home { get; set; }
然后当你需要添加一个新的 Match
时,只需填充 HomeId
并将 Home
属性 设置为 null
这样它就不会被重新添加到数据库中。