После прочтения этой статьия решил поближе взглянуть на то, как я использую Dapper.
Я запустил этот код на пустой базе данных
var members = new List();
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 вставок в секунду. Неплохо, но и не отлично, учитывая, что блог достиг 45 000 вставок в секунду. Есть ли более эффективный способ сделать это в Dapper?
Кроме того, в качестве примечания, выполнение этого кода с помощью отладчика Visual Studio заняло более 3 минут! Я полагал, что отладчик немного замедлит его, но я был очень удивлен, увидев это.
] ОБНОВЛЕНИЕ
Итак, это
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();