我正在使用Entity Framework以及默認的ASP.NET Membership服務。我還有第三張「資料信息」表。我認爲EF會照顧所有內部,但事實並非如此。當我嘗試通過轉到像http://localhost:19506/User/Delete/SomeGUIDhere
這樣的URL來刪除用戶時,我收到了一些令人討厭的錯誤,這些錯誤與存在外鍵約束的事實相關。如何刪除與「用戶」關聯的所有記錄?
如何管理這些類型的依賴關係?不得不跟蹤這一切,這一切都打敗了EF的目的,所以我猜測我錯過了一些小事。
編輯包括一些我正在工作的代碼。我仍然想知道是否有比以下更好的方法。似乎很快就會失去控制,很多外鍵依賴項都在浮動。
public void DeleteUser(User u)
{
db.Profiles.DeleteObject(u.Profile);
db.aspnet_Membership.DeleteObject(u.aspnet_Membership);
db.Users.DeleteObject(u);
db.SaveChanges();
}
看起來很簡單。在你的屏幕截圖中,突出顯示的部分是否意味着當你刪除一篇文章時,其所有相關的評論都會隨之發佈?在我的問題中,我有1:1的用戶:個人資料。當我刪除一個用戶時,我希望該配置文件也可以使用,但是如果用戶沒有被刪除,我不希望能夠意外刪除配置文件。 – Pete 2011-03-29 01:51:14
@Pete:是的,你的陳述是正確的 - 實際上檢查這個問題 - 假設你在做數據庫,首先EF應該從數據庫中選擇級聯刪除 - 確保你在那裏設置了設置,從你的模型中刪除實體,並通過「從數據庫更新」重新添加它 - 它應該添加級聯刪除然後 - 請在您的模型之後再確認。另請查閱這篇文章:http://blogs.msdn.com/b/alexj/archive/2009/08/19/tip-33-how-cascade-delete-really-works-in-ef.aspx – BrokenGlass 2011-03-29 02:29:10