我正在使用dapper rainbow database.cs扩展,
private void insertList(IEnumerable<myObject> list)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
var db = myDB.Init(conn, commandTimeout: 100);
db.myTable.tableName = "ds.myTable";
Parallel.ForEach(dsList, a => db.myTableInsert(a)
);
db.Dispose();
}
}
这不起作用,我想我需要打开和关闭Parallel.ForEach中的连接。这是写的方式吗?
我想使用这个扩展,它非常有帮助和手,但有这个插入列表的问题。我在网上找不到任何关于使用此扩展程序和使用列表的内容。
答案 0 :(得分:2)
一般情况下,数据库连接不是线程安全的,因此在同一个连接上并行插入,这样会造成麻烦。
所以我会说是的,您需要打开并关闭Parallel.ForEach()
内的连接。您可能也希望对此进行基准测试。我并不完全相信像多个数据库连接一样并行执行插入比在单个连接上以常规循环执行它们要快得多。