我应该如何在Dapper中使用IDbConnection和IDbTransaction?
目前我只使用IDbConnection
。如下:
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Execute(@"insert Roles(Name) values (@name)", new { name = "Role" });
}
但有时我需要发送2个命令?我应该使用BeginTransation
和EndTransaction
吗?
答案 0 :(得分:14)
是的,如果你需要两个单独的命令来原子化并一起失败,那么你应该使用一个事务。
using (new TransactionScope(TransactionScopeOption.Required))
{
connection.Execute(...);
connection.Execute(...);
}
或者如果您想使用BeginTransaction
并将其传入,您也可以这样做:
using (var transaction = connection.BeginTransaction())
{
connection.Execute(sql1, params1, transaction);
connection.Execute(sql2, params2, transaction);
}