2011-10-07 72 views
4

我想在批次集中插入记录。例如,假设我有10,000条记录要插入。我想分批插入500或1,000。我怎样才能动态地做到这一点?那就是......拿第一个500或1,000个插入它们,拿下另一个插入它们,等等。在我的例子中,10,000的集合由通用列表组成,所以我想相应地插入或分割这个列表。有没有办法批量插入使用LINQ到SQL

10,000的计数不会是一个静态计数。可能会更少或更多。只想分批插入500或1,000。

+0

为什么你不能,你只是用InsertOnSubmit,当你想蝙蝠,你只需按提交变更 –

+1

@SarawutPositwinyu:您可以* *做到这一点,但是这将是非常低效的。 – mellamokb

+0

@mellamokb我从来不知道这一点,感谢分享。 –

回答

4

使用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. 

显然,这可以在一个循环中通过增加跳过量,而不是创建每个部分独立变量来实现 - 我只是展示了这个想法。

而且您可能会发现这些链接有用:

1

你可以循环遍历你的10,000列表并将它们放在一个辅助“插入”列表中,该列表将保存你的500或1000.处理“插入”列表,然后插入下一个500或1000.重复,直到完成。

相关问题