实体框架 - 如何解决“违反PRIMARY KEY约束”错误?
问题描述:
我有班,其中Team Home
和Team Guest
另一类存在。实体框架 - 如何解决“违反PRIMARY KEY约束”错误?
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
已经存在
答
由于@DevilSuichiro正确提到的加赛,你不需要填写您的导航性能。添加外键所有导航性能是这样的:
public virtual int HomeId { get; set; }
[DataMember]
[ForeignKey("HomeId")]
public virtual Team Home { get; set; }
然后当你需要添加一个新的Match
只需填写HomeId
并设置Home
属性null
所以它不会被重新添加到数据库中。
由于所有导航属性都添加了,所以您可能在某些导航属性中拥有相同的团队。如果您只想添加匹配项,请将这些导航属性设置为空(将FK保留原样),这样就不会再添加这些导航属性。 – DevilSuichiro