是否可以使用plinq ForAll批量插入数据库?
我这样做:
entities.AsParallel().ForAll(o => repository.Insert(o));
这很好,我会有更多的表现吗?
没有。
这个可以更快,因为它利用了对SQL的并行性,但最终SQL必须锁定表(页面),因为它进行插入。 因此,每个并列请求再次执行。
如果要进行批量插入,请使SP接受所有条目(例如,使用SQL 2008的表)。或者使用Linq2SQL。
这将是正确的设计解决方案。
可能不是。 每个插入实际上都是在一个单独的线程上进行,而批量插入通过一次从单个线程传输大量数据来很好地工作。
PS:SqlBulkCopy可以比并行插入更好,更好。 尽可能使用它。