2011-11-28 56 views
0

我有2個具有主從關係的表。我們使用DataGridView來處理詳細記錄。詳細記錄具有帶查找值的字段(外鍵)。我們不設置查找表的ID值,而是設置對象值。這一切運作良好,而不是一種情況。如果我們添加詳細信息行並設置至少一個查找字段並在保存之前刪除此行(提交更改),我們會收到此錯誤:Linq-to-sql在提交之前刪除新的子記錄時出錯

嘗試刪除TableX和TableY之間的關係。但是,關係的外鍵之一(TableY.TableXID)不能設置爲null。

這個問題在this question(向下滾動到Neil Barnwell的答案)中討論過,但是對於這個特殊問題沒有答案。 「調用Datacontext.GetChanges」的解決方案沒有幫助,因爲Datacontext不公開一個方法GetChanges和GetChangedset失敗並出現相同的錯誤。

回答

1

我認爲刪除該行時存在某種錯誤。將詳細信息行添加到主行時,它會自動附加到上下文。所以,如果你添加具有:

myMasterRow.DetailsRows.Add(myDetails); 

你必須使用DeleteOnSubmit扭轉補充說:

context.DetailsRows.DeleteOnSubmit(myDetails); 

數據上下文是足夠聰明的對待刪除「撤銷添加」,這樣的條目將從未擊中數據庫。