是否可以使用plinq ForAll批量插入数据库?

我这样做:

entities.AsParallel().ForAll(o => repository.Insert(o)); 

这很好,我会有更多的表现吗?

没有。

这个可以更快,因为它利用了对SQL的并行性,但最终SQL必须锁定表(页面),因为它进行插入。 因此,每个并列请求再次执行。

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

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

可能不是。 每个插入实际上都是在一个单独的线程上进行,而批量插入通过一次从单个线程传输大量数据来很好地工作。

PS:SqlBulkCopy可以比并行插入更好,更好。 尽可能使用它。