Que tal.
Estoy intentando un proceso que llevo a cabo en varios procedimientos, pero necesito usar transacciones.
Actualmente lo hago de esta forma:
Código:
private void accion()
{
SqlTransaction trans;
abreCnx();
trans = cnx.BeginTransaction();
try
{
string Consulta = "...";
sqlcommand cmd = new sqlcommand(consulta, cnx, trans);
cmd.executeNomQuery();
accion2();
trans.commit();
}
Catch(Exception)
{
trans.rollback();
throw;
}
finally
{
cierraCnx();
}
}
private void accion2()
{
SqlTransaction trans;
abreCnx();
trans = cnx.BeginTransaction();
try
{
string Consulta = "...";
sqlcommand cmd = new sqlcommand(consulta, cnx, trans);
cmd.executeNomQuery();
trans.commit();
}
Catch(Exception)
{
trans.rollback();
throw;
}
finally
{
cierraCnx();
}
}
Pero este codigo no me funciona, ya que si accion2 se ejecuta correctamente, hace el commit, y si accion falla, le hace rollback solo a lo de accion, pero accion2 ya hizo lo que tenia que hacer y no se deshace.
Como puedo hacerlo?
Espero que me haya dado a entender y que me puedan ayudar.
Gracias