最佳答案
在阅读了 这篇文章之后,我决定仔细研究一下我使用 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分钟!,我认为调试器会稍微降低它的速度,但是我真的很惊讶看到这么多。
更新
所以这个
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();