考虑下面的例子中如何检测实体存在:实体框架:的DbContext:在数据库
public class Parent
{
public Guid ID {get;set;}
public string Name {get;set;}
public Child Child {get;set;}
}
public class Child
{
public Guid ID {get;set;}
public string Name {get;set;}
}
我要救一个父对象实例,用分配给它的子实例。这里的事实是:在给定的子对象已存在于数据库中,
Parent p = new Parent();
p.ID = Guid.NewGuid();
// Get the Child Object
Child c = GetTheChild(...);
p.Child = c;
SaveParent (p);
在功能上保存父,下面的代码实现:
public void SaveParent (Parent p)
{
using (MyContext context = new ClinicContext())
{
context.Parents.Add(P);
context.SaveChanges();
}
}
现在问题就来了:因为在这个孩子例子已经存在于数据库中,但是当在上下文DBSet中添加父项时,给定的实体c也保持“已添加”的输入状态,猜测什么? DBContext尝试保存另一个带有重复键的子记录!
任何机构都知道如何解决这个问题?我在想如果实体框架可以检测到数据库中已经存在的记录,是否有办法将Insert插入到Update中。
感谢您的帮助。