Чудной.IDbConnection и IDbTransaction - PullRequest
4 голосов
/ 24 марта 2012

Как мне использовать IDbConnection и IDbTransaction с Dapper?

На данный момент я использую только IDbConnection. Что-то следующее:

using (SqlConnection connection = new SqlConnection(connectionString)) 
{
    connection.Execute(@"insert Roles(Name) values (@name)", new { name = "Role" }); 
}

Но иногда мне нужно отправить 2 команды? Должен ли я использовать BeginTransation и EndTransaction?

1 Ответ

14 голосов
/ 24 марта 2012

Да, если вам нужно, чтобы две отдельные команды были атомарными и не работали вместе, вам следует использовать транзакцию.

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);
}
...