После прочтения этой статьи я решил более подробно рассмотреть способ использования Dapper.
Я запустил этот код в пустой базе данных
var members = new List<Member>();
for (int i = 0; i < 50000; i++)
{
members.Add(new Member()
{
Username = i.toString(),
IsActive = true
});
}
using (var scope = new TransactionScope())
{
connection.Execute(@"
insert Member(Username, IsActive)
values(@Username, @IsActive)", members);
scope.Complete();
}
потребовалось около 20 секунд. Это 2500 вставок в секунду. Неплохо, но неважно, что в блоге было 45k вставок в секунду. Есть ли более эффективный способ сделать это в Dapper?
Кроме того, в качестве побочного примечания, запуск этого кода через отладчик Visual Studio занял более 3 минут!. Я полагал, что отладчик немного замедлит его, но я был очень удивлен, увидев, что много.
UPDATE
Итак, это
using (var scope = new TransactionScope())
{
connection.Execute(@"
insert Member(Username, IsActive)
values(@Username, @IsActive)", members);
scope.Complete();
}
и этот
connection.Execute(@"
insert Member(Username, IsActive)
values(@Username, @IsActive)", members);
оба заняли 20 секунд.
Но это заняло 4 секунды!
SqlTransaction trans = connection.BeginTransaction();
connection.Execute(@"
insert Member(Username, IsActive)
values(@Username, @IsActive)", members, transaction: trans);
trans.Commit();