[英]c#, entity framwork: how is the best way to update/delete childs?
我有表A和表B:
TableA(IDTableA,...) TableB(IDTableB, IDTableA,...)
我知道如果我在數據庫上設置了cascada,就可以刪除它,但是如果我還沒有在數據庫中定義它,並且想刪除帶有EF的子代,那是最好的方法?
想象這種情況:用戶A將父級添加到上下文中,用戶A將子級添加到上下文中,將父級和子級標記為已刪除並保存更改。 但是,如果用戶B在用戶A加載子級並確認更改之間添加了新子級,則不會刪除用戶B添加的新子級,或者由於引用完整性而導致異常。
我嘗試使用事務,將父級設置為已刪除,然后在下一步中,當我進行savechanges
,父級寄存器被鎖定,因此其他用戶無法加載。 但是問題是一樣的,其他用戶可以在父級加載和保存更改之間更改父級。
所以我的問題是,如果要刪除具有EF的父級及其所有子級,這是最好的方法? 最好的方法是嘗試N次刪除父項? 當我擁有出色的表現時,這是一個不錯的選擇嗎?
謝謝。 戴姆羅克。
您已經回答了自己的問題。 使用級聯刪除。 您可以先使用EF代碼啟用它們,請參閱如何首先確保在EF Code中的表關系上啟用級聯刪除? ,或通過將關系標記為級聯來使用設計器。
在這種特殊情況下,我認為最好的方法是使用觸發器刪除de childs。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.