2011-10-25 53 views
8

我有兩個表Application_User和Application_User_Access。 Application_User_Access表具有Application_User表的外鍵約束。DELETE語句與ASP.NET動態數據中REFERENCE約束衝突

當我刪除Application_User表中的記錄時,收到「與REFERENCE約束衝突的DELETE語句」異常。

這發生在ASP.NET動態數據實體Web應用程序中。我想刪除這種情況下的所有子記錄,最後刪除父記錄。如何實現這一點?

回答

12

您可以對Application_User_Access表執行級聯刪除。爲此,您需要稍微修改您的數據庫模式。具體請從Application_User_AccessApplication_User表之前的基準,並添加一個新問題:

--not sure about the column names though 

ALTER TABLE Application_User_Access 
ADD CONSTRAINT FK_Application_User_Access_Application_User 
FOREIGN KEY (used_id) 
REFERENCES Application_User(id) 
ON DELETE CASCADE 
GO 

注意ON DELETE CASCADE事情。這意味着只要主鍵記錄被刪除,引用它的外鍵記錄也將被刪除。

+0

在我的上下文的部分類中,我使用下面的代碼添加了OnSavingChanges方法, – Anand

+1

嗯,這是一種可能的方法,但它有一點缺陷。 'Application_User_Access'記錄沒有'Application_User'沒有意義。這不是業務規則,這是數據庫完整性的問題。這就是爲什麼我會說通過添加級聯刪除來修改約束在這裏更好一點。但畢竟,你應該採用你覺得最舒服的方法。 – Andrei

+0

將其更改爲ON DELETE CASCADE不適用於我。 – MindBrain

相關問題