我爲兩個實體定義了一對多關係,我們只需說Customer和Order。該關係指出一個Customer對象可以有許多Order對象,但是一個Order必須有一個Customer ...一個非常標準的1:M關係。爲什麼在刪除一些實體實例時拋出InvalidOperationException異常,而爲別人拋出UpdateException
我沒有在數據庫上配置級聯規則,而OnDeletes在我的實體數據模型中設置爲None。這意味着刪除有訂單的客戶將不被允許。
我的問題是,當我的應用程序的用戶刪除的客戶(可能有訂單),我要趕由強制執行外鍵約束拋出的異常。對於有33個訂單的特定客戶,我得到InvalidOperationException,但對於只有2個訂單的另一個客戶,我得到UpdateException。 EF正在讓第二條刪除語句進入數據庫,並且數據庫正在返回EF爲其生成UpdateException的錯誤。在第一種情況下,EF甚至沒有讓delete語句訪問數據庫,它只是說,這將是無效的,因爲客戶的這種實體實例包含訂單。
任何人都可以解釋爲什麼會發生這種行爲?