考慮下面的例子中如何檢測實體存在:實體框架:的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中。
感謝您的幫助。