我想在批次集中插入記錄。例如,假設我有10,000條記錄要插入。我想分批插入500或1,000。我怎樣才能動態地做到這一點?那就是......拿第一個500或1,000個插入它們,拿下另一個插入它們,等等。在我的例子中,10,000的集合由通用列表組成,所以我想相應地插入或分割這個列表。有沒有辦法批量插入使用LINQ到SQL
10,000的計數不會是一個靜態計數。可能會更少或更多。只想分批插入500或1,000。
我想在批次集中插入記錄。例如,假設我有10,000條記錄要插入。我想分批插入500或1,000。我怎樣才能動態地做到這一點?那就是......拿第一個500或1,000個插入它們,拿下另一個插入它們,等等。在我的例子中,10,000的集合由通用列表組成,所以我想相應地插入或分割這個列表。有沒有辦法批量插入使用LINQ到SQL
10,000的計數不會是一個靜態計數。可能會更少或更多。只想分批插入500或1,000。
使用Linq-to-Sql來執行INSERT
將不會有效,因爲即使您批量發送,它也會將它們作爲單獨的INSERT
語句運行。您可以嘗試使用像這樣的庫或第三方代碼發送批次:http://devio.wordpress.com/2011/08/05/batch-insert-using-linq-to-sql/。
至於分裂你的列表,你可以做這樣的事情:
var first = myList.Take(500);
var second = myList.Skip(500).Take(500);
var third = myList.Skip(1000).Take(500);
// etc.
顯然,這可以在一個循環中通過增加跳過量,而不是創建每個部分獨立變量來實現 - 我只是展示了這個想法。
而且您可能會發現這些鏈接有用:
你可以循環遍歷你的10,000列表並將它們放在一個輔助「插入」列表中,該列表將保存你的500或1000.處理「插入」列表,然後插入下一個500或1000.重複,直到完成。
爲什麼你不能,你只是用InsertOnSubmit,當你想蝙蝠,你只需按提交變更 –
@SarawutPositwinyu:您可以* *做到這一點,但是這將是非常低效的。 – mellamokb
@mellamokb我從來不知道這一點,感謝分享。 –