2017-08-24 2 views
1

Ich versuche herauszufinden, wie Sie den Dapper mit der Transaktion richtig verwenden. Aber ich denke immer noch, dass ich etwas falsch mache. Alle Beispiele, die ich gefunden habe, sind ohne Async.Dapper Async und Transaktion

Könnte jemand mir raten, wie man es richtig macht?

+0

Erklären Sie, warum Sie denken, dass es falsch ist. Dieses Beispiel ist ziemlich sinnlos, es sei denn, Trigger auf 'Personen' sind beteiligt, weil Sie nur eine einzige Operation ausführen, die bereits in ihrer eigenen impliziten Transaktion arbeitet (unter der Annahme von MSSQL). – Crowcoder

Antwort

1

Umwickeln Sie einfach Ihren DB-Zugriff in einem Transaktionsbereich mit TransactionScopeAsyncFlowOption aktiviert.

public async Task AddPerson(string name, string surname) 
{ 
    const string sql = "insert into Persons(Name, Surname) values(@Name, @Surname)"; 

    using (var tran = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) 
    using (var connection = await _connectionProvider.OpenAsync()) //Or however you get the connection 
    { 
    await connection.ExecuteAsync(sql, new{name, surname}); 
    tran.Complete(); 
    } 
}