簡體   English   中英

C#,實體框架:如何更新/刪除孩子的最好方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM