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