C# Dapper - Cómo usar transacciones con Dapper

C# Dapper - Cómo usar transacciones con Dapper

Dapper es un micro ORM o un mapeador de objetos simple y se integra sin problemas con C# y su SqlConnection. Lo mismo se aplica a Dapper y las transacciones, ya que Dapper amplía el funcionamiento sin problemas de las transacciones de SqlConnection. A continuación se muestra un ejemplo de ejecución de una transacción con dos inserciones utilizando 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();

En lo anterior, primero creamos y abrimos una nueva SqlConnection. Luego comenzamos una transacción en la conexión Sql y proporcionamos esto para nuestras declaraciones SQL, que son dos inserciones. Cuando hayamos terminado, cometemos la transacción. Eso es todo.

Podemos probar lo anterior poniendo una excepción entre las dos inserciones:

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();

En lo anterior, no se inserta nada ya que se lanza una excepción y la transacción nunca se confirma. Si no hubiera habido ninguna transacción en lo anterior, se habría insertado el primer inserto y no el segundo.

Eso es

Espero que hayas encontrado esto útil, por favor deja un comentario abajo, ¡los leí todos!