網頁

2012年11月3日 星期六

使用Entity Framework5做資料刪除

一個小心得分享給大家
這兩天用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 列舉型別。

2 則留言:

  1. 這語法在 EF4 就有了,並不是 EF5 才出現,你可以試試看。

    回覆刪除
    回覆
    1. 您好 剛剛測試了一下
      真的如您所說的 EF4就可以使用這個語法了
      也發現EntityState似乎比AddToObject() DeleteObject這些來的方便

      刪除