Come dovrei usare un IDbConnection e un IDbTransaction con Dapper?
Al momento sto usando solo un IDbConnection
. Qualcosa come segue:
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Execute(@"insert Roles(Name) values (@name)", new { name = "Role" });
}
Ma a volte ho bisogno di inviare 2 comandi? Dovrei usare BeginTransation
e EndTransaction
?
Sì, se hai bisogno di due comandi separati per essere atomici e fallire insieme, allora dovresti usare una transazione.
using (new TransactionScope(TransactionScopeOption.Required))
{
connection.Execute(...);
connection.Execute(...);
}
O se vuoi usare BeginTransaction
e passarlo, puoi anche fare:
using (var transaction = connection.BeginTransaction())
{
connection.Execute(sql1, params1, transaction);
connection.Execute(sql2, params2, transaction);
}