2012-07-10 100 views
1

我有一個Customers表,一個Sports表和Customers_Sports連接表。最後一個表格告訴我哪些客戶玩什麼運動,即包含另外兩個表的外鍵。LINQ to SQL刪除記錄引用的外鍵

強制外鍵約束,外鍵不能爲空。

使用LINQ,有沒有簡單的方法來刪除客戶,同時刪除引用客戶的連接表中的所有記錄?

我可以做到這一點,即首先刪除連接表中的相關記錄,然後刪除客戶的客戶記錄。

+0

設置數據庫級聯刪除是否在項目範圍內? – 2012-07-10 18:48:38

+0

我確實可以設置數據庫來執行級聯刪除,但我認爲(或希望)LINQ to SQL將提供所需的「智能」。 – 2012-07-11 20:48:14

回答

0

簡單是真正的踢球手。 There's not an automatic way to do it.基本上,您將刪除與給定客戶匹配的Customer_Sports表中的所有內容,然後自行刪除該客戶。我相信,如果您在執行SubmitChanges()之前刪除了兩者,則不應該遇到任何外鍵約束違規。

如果你想變得非常喜歡,你可以使用反射來創建一個通用函數,在任何時候都會有這樣的外鍵類型,如Linq to SQL cascading delete with reflection

設置數據庫爲你做這件事可能會少得多。性能可能會更好,但除非您知道自己有性能問題,否則不應該擔心性能。

+0

是的,令人沮喪的方式。 – 2012-07-28 09:00:32