0

我知道在SQL Server中,當我刪除表中的父行時,我可以使用級聯刪除,但在某些地方我讀了更好地實現此邏輯在應用程序(存儲庫)中而不是在SQL Server中級聯刪除。SQL Server 2008中的C#,實體框架和刪除子註冊

所以我有兩個問題。首先,如果我不使用SQL Server中的刪除級聯,如何使用Entity Framework來解決這種情況。

  1. 用戶A將父寄存器及其子上下文
  2. 用戶B增加了一個新的子父寄存器。因此,用戶A在上下文中沒有此子女
  3. 用戶A刪除父母和所有在其上下文中加載的子女。這些孩子並不包括用戶B.添加新的子

那麼,在實踐中,是沒有問題的,當用戶A試圖刪除父,有一個參照完整性異常,並且需要加載所有的孩子,然後重試。

這是SQL Server的額外工作,因爲它需要再次向用戶A發送所有寄存器。

如果我在SQL Server中使用級聯刪除,這個問題不存在,所以我認爲是一個不錯的選擇。

所以我的第二個問題是,在SQL Server(或其他數據庫)上使用刪除級聯是一個好主意還是更好地在業務邏輯(存儲庫)中實現這種情況?

謝謝。

回答

1

這是一個個人喜好的問題 - 我聽到兩個選項的有效參數。

什麼更明顯,更容易理解你?

  • 你喜歡有AUTOMAGIC刪嗎?然後使用ON DELETE CASCADE

  • 還是你更喜歡在這些情況下完全控制要知道準確時間和內容被刪除?然後在自己的自定義代碼

有沒有正確或錯誤執行它,沒有「好」或「差」的 - 它更多的是你自己的個人喜好,以及如何你感覺更舒服的代碼。