Tengo un método en mi clase que ejecuta dos procedimientos almacenados e inserta datos en tres tablas. ¿Cómo manejar la transacción en ese caso?

Por ejemplo:

public class InsertClass
{
   public void AddData()
   {
       try
       {
           Execute Sp1;
           Execute Sp2;
       }
       catch (Exception ex)
       {
           throw ex;
       }
   }
}

Ambas SP son para insertar.

0
Kiran Shahi 14 nov. 2017 a las 09:41

2 respuestas

La mejor respuesta

Prueba esto:

SqlConnection con = new SqlConnection(conString);
SqlCommand cmd1,cmd2;
con.Open();
cmd1 = new SqlCommand("sp1",con);
cmd2 = new SqlCommand("sp2",con);
SqlTransaction trans = con.BeginTransaction();
cmd1.Transaction = trans;
cmd2.Transaction = trans;
try
{
    cmd1.ExecuteNonQuery();
    cmd2.ExecuteNonQuery();
    trans.Commit();
}
catch (Exception)
{
    trans.Rollback();
}
2
Kiran Shahi 20 nov. 2017 a las 03:31

Pruebe este código:

connection.Open();
SqlTransaction transaction = connection.BeginTransaction();

try
       {
           Execute Sp1;
           Execute Sp2;
       }
       catch (Exception)
       {
           transaction.Rollback();
           connection.Close();
       }

       transaction.Commit();
-1
Kaval Patel 14 nov. 2017 a las 11:03