2015-09-28 34 views
-1

C#的WinForms,SQL Server中,實體框架6.C#的WinForms EF6 - 多個更新異常處理

所以我有兩個表,EmployeeBusinessGroupEmployeeBusinessGroup中的外鍵。

作爲我的測試的一部分,我試圖刪除兩名員工,然後致電SaveChanges()

當然,它拋出一個DbUpdateException,我抓住並試圖處理。

這是我的問題:第一次刪除(嘗試)發生時異常似乎被拋出。我想爲我的用戶做的是列出導致衝突的所有記錄(本例中爲兩個)。

我該怎麼做?

謝謝。

+0

你問如何寫一個SQL查詢,或者你問如何顯示信息在'winforms'控件?你試過什麼了? – Loathing

+0

不,不問如何編寫SQL查詢,只是指出底層數據庫是SQL Server。 到目前爲止,我試圖捕捉異常並解碼它,並且工作正常。問題是,當多個記錄被刪除(通過我的應用程序),我做了一個'SaveChanges()',我只能得到第一個刪除失敗的條目,我想知道如何獲得所有條目,或者會失敗刪除。 – Yabbie

+0

您很可能必須編寫一個select語句,如'select * from BusinessGroup EmployeeId in(...)',這將返回無法刪除的員工。您也可以考慮使用軟刪除來代替,方法是添加一個「IsDeleted」列。 – Loathing

回答

0

您試圖刪除引用/外鍵在另一個表上的記錄?在實際刪除員工記錄本身之前,您需要先將這些引用記錄刪除給這些員工。

例如,表A是主表,並且在表中引用表B。您將無法刪除A中的記錄,除非您首先刪除B中的那些記錄,A中的記錄所引用的記錄。

所以刪除記錄有關一個記錄,然後刪除記錄在一個

+0

謝謝,但我明白問題是什麼,我正在努力解決的問題是如何獲得導致衝突的所有記錄。 – Yabbie

+1

您可以創建一個linq表達式來檢查基表中的現有/引用記錄。或者你可以創建一個存儲過程來收集你想獲得的衝突記錄,並用linq調用它。希望能幫助到你。 – Jeff