Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/07/2009, 09:27
jorgesl
 
Fecha de Ingreso: octubre-2008
Mensajes: 19
Antigüedad: 15 años, 7 meses
Puntos: 0
transacciones en distintas funciones

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