簡體   English   中英

在實體框架中刪除對象及其所有子對象?

[英]Delete object and all its child objects in Entity Framework?

我一直在嘗試在這里找到這個問題的答案。 似乎有人在問類似的事情,但我沒有得到答案。 我有一個EF實體,帶有一堆子實體(一對多關系)。 我希望能夠刪除“父”實體,並同時刪除所有子實體。

有人提到應該在EF模型和數據庫上設置“級聯刪除”(在我的例子中是Sql Server)。 問題是:

  1. 我完全不知道如何執行此操作(似乎應該在您應該知道的答案中隱含該信息,但對不起...)
  2. 我有一種感覺,我之前也遇到過類似的問題,並在某個地方找到了比設置“級聯刪除”更簡單的答案。 我可能是錯的,也許這是唯一的方法,但是如果有一個更簡單的解決方案,我想知道。

無論哪種情況,我們都會非常感謝您提供一個清晰的示例來說明如何進行此工作!

在SQL Managment Studio中,轉到您的數據庫並找到應該有外鍵的表。 將外鍵添加到指向另一個表的表。 我假設您知道如何設置外鍵。 在對話框窗口底部的外鍵設置中,您將看到Delete屬性。 將其設置為Cascade。 每當父行被刪除時,這將導致所有從屬行被刪除。 然后在Visual Studio中更新您的數據模型。 現在應該為您設置所有內容。

這是有關 MSDN的一些相關文檔 請注意,盡管在示例中似乎有錯誤。 使用此配置時,我從EDMX設計器收到以下錯誤。

不能在重復數為*的末端指定操作。

您應該將OnDelete屬性設置為Cascade,最后將觸發另一端的刪除。

例如,在涉及客戶和訂單的關系中,如果您希望與客戶一起刪除客戶的訂單,則應將“客戶”角色的OnDelete屬性設置為Cascade。

請注意,級聯刪除只會影響已加載到ObjectContext中的對象。 您將依靠您在數據庫中設置的級聯刪除來照顧任何其他記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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