Мне нужно было сделать Bulk insert с более щадящей радугой
Я использую расширения базы данных dapper rainbow,
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. Это написать способ сделать это?
Я хотел использовать это расширение, оно очень полезно и полезно, но у меня возникла проблема с вставкой списка. Я не смог найти в Интернете ничего об использовании этого расширения, а также об использовании списка.
1 ответ
Как правило, соединения с базой данных НЕ являются поточно-ориентированными, поэтому параллельные вставки в одно и то же соединение могут вызвать проблемы.
Так что я бы сказал, что да, вам нужно будет открыть и закрыть соединение внутри Parallel.ForEach()
, Возможно, вы захотите сравнить это. Я не совсем убежден, что параллельное выполнение вставок с несколькими подключениями к базе данных будет быстрее, чем регулярное выполнение цикла на одном подключении.