2010-09-02 49 views
1

我正在刪除與外鍵鏈接的不同表中的一堆記錄。當我打電話「的SubmitChanges」收到以下錯誤:LINQ to SQL不調用DELETE

DELETE語句衝突與基準約束 FK_PTXProductMap_CustomerProduct」。該衝突發生於數據庫‘技工機構’,表 ‘dbo.PTXProductMap’,列「INSTANCEID 「 該語句已終止。

我望着探查時的SubmitChanges試圖保存的修改和刪除SQL操作不叫2條記錄執行哪些查詢。我100%肯定LINQ2SQL-'DELETE」操作被稱爲他們(我把一個斷點的線:

IEnumerable<CustomerProduct> products = DbContext.CustomerProducts 
    .Where(cp => cp.InstanceId == transition.InstanceId 
      || cp.InstanceId == transition.PreInstanceId); 
foreach (CustomerProduct cp in products) 
{ 
    DbContext.CustomerProducts.DeleteOnSubmit(cp); 
} 

並檢查是否調用了所需的cp對象。 DELETE被稱爲來自同一張表的另一個記錄...但不是所有要求的

你有什麼想法,爲什麼發生這種情況?以及如何解決這個問題?

歡迎任何想法。

P.S.我正在使用VS2008 SP1,64位Windows 7下的MS SQL 2005。

P.P.S.我在另一個表中檢測到與已刪除作用域鏈接的記錄中的少量記錄...包括其刪除已解決的當前錯誤,但仍不清楚爲什麼對於要刪除的所有記錄沒有生成「刪除」操作。

P.P.P.S.對另一對錶非常相似的情況:表A包含1條記錄,表B-3涉及A.1的記錄它們無法在一個事務中被刪除,但是如果我手動刪除它們(通過Management Studio)I我能夠從B中刪除3條記錄,然後從A ...中記錄爲什麼?

回答

1

This article about DeleteOnSubmit包含處理級聯刪除的註釋。我們建議您先刪除子行,然後刪除父實體時不會出現問題。

+0

是的,我首先刪除子行...這沒有幫助。感謝您的鏈接。 – Budda 2010-09-03 13:48:25