2010-09-08 81 views
0

我有一個Linq to SQL InsertOnSubmit的問題,它似乎只適用於表中的第一個項目。Linq to SQL InsertOnSubmit多個對象

例如有以下幾點:

var noteDetail1 = new NoteDetail() { Title = "Test Note Title 1", NoteText = "Test note" }; 
var waiverDetail1 = new WaiverDetail() { Title = "Test Waiver Title 1", NoteText = "Test waiver details text" }; 
var riskDetail1 = new RiskDetail() { Title = "Test Risk Title 1", NoteText = "Test risk details text" }; 
context.Notes.InsertOnSubmit(noteDetail1); 
context.Notes.InsertOnSubmit(riskDetail1); 
context.Notes.InsertOnSubmit(waiverDetail1); 
context.SubmitChanges(); 

我只得到了第一個實體(「測試注意標題1」)插入到數據庫中。如果在每個InsertOnSubmit之後放置SubmitChanges,則所有行均已成功插入。

上述類型都是從Note類繼承的,所以都插入到同一個表中。

但是,我遇到了與非派生類相同的問題。

我花了很長時間看這個,但無法找到我做錯了什麼。 InsertOnSubmit/SubmitChanges的整個想法是這樣,你可以做多個更改,所以一定有一些簡單的我缺少的東西。

+0

你有什麼異常嗎? – Jonathan 2010-09-08 15:52:47

+0

沒有例外,它只是不起作用。剛纔我想到,也許這是由於Id字段是自動遞增數據庫分配的標識字段,所以Linq to SQL無法區分它們。事實上,雖然我只是寫這篇文章,但我敢打賭,這是因爲我有重寫等於比較Id。我會檢查一下。 – Darren 2010-09-08 15:58:54

回答

0

問題是我在我的實體類中覆蓋了Equals,因此具有相同Id的實體被認爲是相同的。顯然,Linq to SQL在某些時候正在使用它,並得到所有新實體都相等的結果(因爲它們都有Id)。

感謝喬納森是我的"Rubber Duck"