C# Dapper - Come utilizzare le transazioni con Dapper

C# Dapper - Come utilizzare le transazioni con Dapper

Dapper è un micro ORM o un semplice mappatore di oggetti e si integra perfettamente con C# e il suo SqlConnection. Lo stesso vale per Dapper e le transazioni poiché Dapper estende le transazioni SqlConnection funzionano senza problemi con esso. Di seguito è riportato un esempio di esecuzione di una transazione con due inserimenti utilizzando Dapper.Contrib:

using var con = new SqlConnection("<Your connectionstring>");
con.Open();
using var transaction = con.BeginTransaction();

var result = con.Insert<MyEntity>(new MyEntity { 
   Text = "This is a text!"}, transaction);
var result2 = con.Insert<MyEntity>(new MyEntity { 
   Text = "This is another text!" }, transaction);
transaction.Commit();

In quanto sopra creiamo e apriamo prima un nuovo SqlConnection. Quindi iniziamo una transazione sulla connessione Sql e la forniamo per le nostre istruzioni SQL, che sono due inserti. Quando abbiamo finito, commettiamo la transazione. Questo è tutto ciò che c'è da fare.

Possiamo testare quanto sopra inserendo un'eccezione tra i due inserti:

using var con = new SqlConnection("<Your connectionstring>");
con.Open();
using var transaction = con.BeginTransaction();
var result = con.Insert<MyEntity>(new MyEntity { 
   Text = "This is a text!"}, transaction);
throw new Exception(); //Here
var result2 = con.Insert<MyEntity>(new MyEntity { 
   Text = "This is another text!" }, transaction);
transaction.Commit();

In quanto sopra non viene inserito nulla poiché viene generata un'eccezione e la transazione non viene mai confermata. Se non ci fosse stata alcuna transazione sopra, il primo inserto sarebbe stato inserito e il secondo no.

Ecco fatto

Spero che tu l'abbia trovato utile, per favore lascia un commento in basso, li ho letti tutti!