2
這是相當自我解釋。 我如何防止EF插入一個已經存在於db中的對象,當添加一個包含第一個對象的對象時?
public class Subject
{
public Classroom Class {get; set;}
}
我使用的是無狀態的立面包含其他 讓我們稱他們爲主題的一類和課堂,至極意味着我的DbContext正在復甦的對象後立即設置,並創建存儲新的。 不應該知道Classroom不是新對象,因爲它的ID已經在數據庫中了嗎? 使用調試器我可以在調用SaveChanges方法之前跟蹤到該點,並且Classroom.id是我在數據庫上的那個。 什麼問題? EF增加了一個新的Classroom,它具有上一個的確切屬性,但是新增了一個PK。 我在這裏做錯了什麼?
這是用於一般的CRUD操作的代碼(他們在我的DbContext)兩個更新和刪除工作就好了:
public void Update(DbSet MySet, object Obj)
{
MySet.Attach(Obj);
var Entry = this.Entry(Obj);
Entry.State = EntityState.Modified;
this.SaveChanges();
}
public void Insert(DbSet MySet, object Obj)
{
MySet.Add(Obj);
this.SaveChanges();
}
public void Delete(DbSet MySet, object Obj)
{
MySet.Attach(Obj);
var Entry = this.Entry(Obj);
Entry.State = EntityState.Deleted;
this.SaveChanges();
}
謝謝,這可能工作!我使用了類似的代碼,但我已經定義了一個通用方法來插入我的實體,並使用一個通用對象: public void Insert(DataSet dSet,object obj) dSet.Add(obj); this.SaveChanges(); } } 所以我想沒有辦法做到這種匿名狀態 – Alvaro
它是添加外鍵,但強制插入...我只想保持外鍵 – RollRoll
謝謝,這項工作。這很煩人。如果模型有一個Id,預計EF知道這不是一個新的。但再次感謝。 – jcmordan