ADO.Net Entity Framework : (十六) 關聯式資料 - 刪除
之前分享過 ADO.Net Entity Framework 在處理關聯式資料的新增、修改、查詢,
剩下最後一個部份刪除,
一樣先來看 ER-Model
需求是要刪除使用者(User)資料,
來看看範例
範例一
////範例 刪除 David 的資料
using (TestEntities te = new TestEntities())
{
////先取得 David 的資料
var u = te.User.Where(a => a.User_name == "David").First();
////刪除 David
te.DeleteObject(u);
////儲存變更
te.SaveChanges();
}
這段語法看起來正常,但是一執行卻發生
'/ADOEntityFrameworkDemo' 應用程式中發生伺服器錯誤。
The DELETE statement conflicted with the REFERENCE constraint "FK_UserGroup_User". The conflict occurred in database "Test", table "dbo.UserGroup", column 'UserGroup_userid'.
The statement has been terminated.
描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。
例外詳細資訊: System.Data.SqlClient.SqlException: The DELETE statement conflicted with the REFERENCE constraint "FK_UserGroup_User". The conflict occurred in database "Test", table "dbo.UserGroup", column 'UserGroup_userid'.
The statement has been terminated.
@@ 原來是因為還有 Reference ,
再把語法修改一下
範例二
////範例 刪除 David 的資料
using (TestEntities te = new TestEntities())
{
////先取得 David 的資料
var u = te.User.Where(a => a.User_name == "David").First();
////ADO.Net Framework 在刪除的時候,會連帶一起刪除關連的資料
////但是必須先載入關連的資料
u.Group.Load();
u.UserDepartmentReference.Load();
////刪除 David
te.DeleteObject(u);
////儲存變更
te.SaveChanges();
}
這段語法就可以順利執行囉
說明一下,ADO.Net Entity Framework 在處理關聯式資料的時候,會把相關的所有資料一起刪除,
但是前提是在刪除前,必須先使用【Load】方法,把相關聯資料載入
相關資料
ADO.Net Entity Framework : (十四) 關聯式資料 - 修改
ADO.Net Entity Framework : (十三) 關聯式資料 - 新增
ADO.Net Entity Framework : (十一) 關聯式資料 - 查詢
ADO.Net Entity Framework : (十) 關聯式資料搭配Gridview或ListView小技巧
參考連結
HOW TO:變更物件之間的關聯性 (Entity Framework)
- 如果您覺得這篇文章有幫助,請您幫忙推薦一下或按上方的"讚"給予支持,非常感激
- 歡迎轉載,但請註明出處
- 文章內容多是自己找資料學習到的心得,如有不詳盡或錯誤的地方,請多多指教,謝謝