Hola diego .. Aqui esta el codigo de la clase que manipula las
transacciones y tiene el metodo que ejecuta los procedimientos almacenados
...
private SqlConnection conn;
private SqlTransaction trans;
public void BeginTransaction()
{
conn = new SqlConnection(Configuracion.Cadena_conexion);
conn.Open();
trans = conn.BeginTransaction();
}
public void CommitTransaction()
{
trans.Commit();
}
public void RollbackTransaction()
{
trans.Rollback();
}
public void CloseTransaction()
{
trans = null;
conn.Close();
conn = null;
}
public int Exec_StoredProc(string spname, List<SqlParameter> parametros)
{
int Result = 0;
SqlCommand Comando = new SqlCommand();
Comando.CommandType = CommandType.StoredProcedure;
Comando.CommandText = spname;
Comando.Connection = conn;
Comando.Transaction = trans;
foreach (SqlParameter parametro in parametros)
{
Comando.Parameters.Add(parametro);
}
Result = Comando.ExecuteNonQuery();
return Result;
}
Ahora, estoy usando la clase de la siguiente manera :
Auxiliar_BaseDatos bd = new Auxiliar_BaseDatos();
bd.BeginTransaction();
try
{
// Insertar enla tabla
List<SqlParameter> parametros = new List<SqlParameter>();
parametros.Clear();
parametros.Add(new SqlParameter("@parametro 1", Valor 1));
parametros.Add(new SqlParameter("@parametro 2", valor 2));
parametros.Add(new SqlParameter("@parametro 3", valor 3));
bd.Exec_StoredProc("NOMBRE_PROCEDIMIENTO", parametros);
bd.CommitTransaction();
}
catch
{
bd.RollbackTransaction();
}
finally
{
bd.CloseTransaction();
}
Si pongo un break point antes del Commit, y reviso la base de datos, se
realizaron los cambios. Que estoy haciendo mal ?
---
Agustin Galloso Viera
[EMAIL PROTECTED]