這兩天用VS2012改寫資料存取程式發現一個問題
2012預設是用Entity Framework 5做為實體模型的Framework。
這下囧了, EF 5不支援筆者目前使用的語法阿......
舉例來說 假設筆者要刪除資料庫某筆資料為x:
之前的寫法是這樣的--
1.使用db.DeleteObject(x);
2.做db.SaveChanges();的動作
然而,EF 5不支援DeleteObject的方法,須轉為Entry(x).State = System.Data.EntityState.Deleted的方法來刪除資料。
因此筆者將程式碼改寫為--
1.使用db.Entry(x).State = System.Data.EntityState.Deleted;
2.做db.SaveChanges();的動作
這是在沒有Using System.Data的情況下的寫法, 如果不想打System.Data.EntityState...那麼長的Code呢?
很簡單,我們可以在程式碼最上方引用System.Data命名空間,就可以使Code比較簡短了。
如此一來第一行程式碼可改寫為--
db.Entry(x).State = EntityState.Deleted;
提供給大家做參考
補充:
EF 4.X版也支援EntityState,並且提供五種物件狀態:
1.Added
2.Modified
3.Deleted
4.Detached
5.Unchanged
各個狀態說明請參考MSDN - EntityState 列舉型別。
這語法在 EF4 就有了,並不是 EF5 才出現,你可以試試看。
回覆刪除您好 剛剛測試了一下
刪除真的如您所說的 EF4就可以使用這個語法了
也發現EntityState似乎比AddToObject() DeleteObject這些來的方便