2013-06-18 51 views
4

列表試圖做一個:的Upsert與Simple.Data

var list = new List<MyType>(); 
list.Add(new MyType() { PK1 = 1, PK2 = 2 }); 
list.Add(new MyType() { PK1 = 1, PK2 = 3 }); 
Database.Open().MySchema.MyTable.Upsert(list); 

好像沒有什麼改變,我需要做一個foreach或我能做到這一些怎麼樣?

+1

你沒有關閉你的括號與你的對象初始化程序 – Jonesopolis

+0

這應該工作,請參閱https://github.com/markrendle/Simple.Data/blob/master/Simple.Data.SqlTest/UpsertTests.cs#L94來自測試套件的例子。你使用哪個後端數據庫? –

+0

謝謝,閱讀@jakobras答案。需要做一個.ToArray()來執行! –

回答

5

這將工作或結果的任何其他枚舉。

Database.Open().MySchema.MyTable.Upsert(list).ToArray();

雖然不會產生一批SQL查詢,會有很多的查詢數據庫,至少在SQL Server中。

+2

Simple.Data 2的標題功能之一是批量操作。 –

1

是否

Database.Open().MySchema.MyTable.Upsert(new MyType { PK1 = 1, PK2 = 2 }); 

工作?

ToArray的() -

var list = new List<MyType>(); 
list.Add(new MyType() { PK1 = 1, PK2 = 2 }); 
list.Add(new MyType() { PK1 = 1, PK2 = 3 }); 
Database.Open().MySchema.MyTable.Upsert(list.ToArray()); 
+0

是的,這可行,但問題的關鍵在於批量處理。一次不是一個。 –

+1

看看文檔。你可以添加一個列表嗎? –

+0

快速查看文檔,嘗試ToArray()。 –