C# 使用plinq ForAll批量插入数据库可以吗?

C# 使用plinq ForAll批量插入数据库可以吗?,c#,.net,linq,.net-4.0,plinq,C#,.net,Linq,.net 4.0,Plinq,我是这样做的: entities.AsParallel().ForAll(o => repository.Insert(o)); 这样好吗?我会用它表现得更好吗?不会 这一个可以更快,因为它利用了与SQL的并行性,但最终SQL必须为表(页)创建一个锁,因为它创建了一个插入。 因此,每个并行请求都会再次一个接一个地执行 如果要进行大容量插入,请使SP接受所有条目(例如,带有SQL 2008的表)或使用Linq2SQL执行 这将是正确的设计解决方案。可能不是。每个插入实际上都会在一个单独的

我是这样做的:

 entities.AsParallel().ForAll(o => repository.Insert(o));
这样好吗?我会用它表现得更好吗?

不会

这一个可以更快,因为它利用了与SQL的并行性,但最终SQL必须为表(页)创建一个锁,因为它创建了一个插入。 因此,每个并行请求都会再次一个接一个地执行

如果要进行大容量插入,请使SP接受所有条目(例如,带有SQL 2008的表)或使用Linq2SQL执行


这将是正确的设计解决方案。

可能不是。每个插入实际上都会在一个单独的线程上进行,而大容量插入通过在同一时间从单个线程传输大量数据而工作良好

PS:SqlBulkCopy比并行插入工作得好得多。如果可能的话,使用它