[英]DbUpdateException on SaveChanges if child foreign key already exists - in Entity Framework Code First
[ 在实体框架5.0 RC中使用代码优先DbContext ]
public class Compositon
{
public string Id { get; set; }
public string SimpletonId { get; set; }
[ForeignKey("SimpletonId")]
public Simpleton Simpleton { get; set; }
public string CompanitonId { get; set; }
[ForeignKey("CompanitonId")]
public Companiton Companiton { get; set; }
}
var composition = new Compositon();
compositon.Id = "UniquePrimaryKey";
var simpleton = new Simpleton();
// This foreign key does not exist in database yet
simpleton.Id = "Simpleton1";
composition.Simpleton = simpleton;
var companiton = new Companiton();
companiton.Id = "SomeOther1";
composition.Companiton = companiton;
// Repositor references the DbContext
Repositor.Compositons.Add(composition);
Repositor.SaveChanges();
var composition = new Compositon();
compositon.Id = "AnotherUniquePrimaryKey";
var simpleton = new Simpleton();
// This foreign key already exists in database
simpleton.Id = "Simpleton1";
composition.Simpleton = simpleton;
var companiton = new Companiton();
companiton.Id = "SomeOther2";
composition.Companiton = companiton;
Repositor.Compositons.Add(composition);
Repositor.SaveChanges();
DbUpdateException: An error occurred while updating the entries.
我需要能够将这些父类保存到数据库中,因为它们有时是唯一的,即使它们有时包含已存储的导航属性,又该如何保存父类呢?
在第二遍中,您将需要从DbContext
检索现有的Simpleton
。 我猜你可以这样做:
`simpleton = Repositor.Simpletons.First(s => s.Id == "Simpleton1");`
当前,您正在创建一个全新的实体,实体框架会尝试将其插入,从而导致密钥冲突。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.