Visual CSharp .NET - sqlTransaction rollback()

 
Vista:

sqlTransaction rollback()

Publicado por Andres (8 intervenciones) el 31/03/2006 00:47:10
Hola Como estan un saludo, estoy aqui de nuevo para preguntar algo raro no se que digan ustedes, estoy trantando de hacer manejo de transacciones, al querer hacer uno para la capa DAL que estoy modificando del wizard que crea .net no tengo errores de codigo pero si me sale un error Use of unassigned local variable 'trans' la verdad no se ha que se refiere porque la declaracion de trans esta fuera del try

Bueno un saludo a todos, si alguien sabe por que es esto se los agradezco..

public void SaveCategoria(Categoria_DS ds)
{
SqlTransaction trans;

try
{

sqlConnection1.Open();
trans = sqlConnection1.BeginTransaction("Categoria");
sqlDataAdapter1.UpdateCommand.Transaction = trans;
sqlDataAdapter1.InsertCommand.Transaction = trans;
sqlDataAdapter1.DeleteCommand.Transaction = trans;

this.sqlDataAdapter1.Update(ds);

trans.Commit();
ds.AcceptChanges();

}
catch(Exception ex)
{
trans.Rollback("Categoria"); //[Aqui me dice Use of unassigned local variable 'trans']
throw new Exception(ex.ToString());
}
finally
{
sqlConnection1.Close();
}

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:sqlTransaction rollback()

Publicado por Alvaro Rivoir (1 intervención) el 13/04/2006 15:38:13
En el catch estás llamando a un metodo de una clase que no teine porque estar incializada, el compilador no te permite hacer esto, para evitar las referencias nulas, tendrías que hacer lo siguiente

SqlTransaction trans = null;

y en el catch

if(trans != null){
trans.Rollback("Categoria"); //[Aqui me dice Use of unassigned local variable 'trans']
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:sqlTransaction rollback()

Publicado por Andres (8 intervenciones) el 15/04/2006 19:48:17
Alvaro Gracias por tu respuesta muy oportuna, ahora les muestro como quedo la funcion, claro en el momento solo esta salvando a una tabla pero el chiste es tener mas transacciones dentro del roolBack, este era de prueba y esta corriendo, esto lo estoy haciendo sobre una clase componente de las que genera .net, si alguien sabe una forma mejor de manejjar las transacciones o si esta igual esta bien, les recomiendo sus comentarios, Gracias Alvaro de nuevo...

public void SaveCategoriaObjTransaccion(Categoria_DS ds)
{
SqlTransaction Objtrans = null;

try
{

//Objtrans.Connection.Open(); //Esta line la borre
sqlConnection1.Open();
Objtrans = sqlConnection1.BeginTransaction("Categoria");
sqlDataAdapter1.UpdateCommand.Transaction = Objtrans;
sqlDataAdapter1.InsertCommand.Transaction = Objtrans;
sqlDataAdapter1.DeleteCommand.Transaction = Objtrans;

this.sqlDataAdapter1.Update(ds);

Objtrans.Commit();
ds.AcceptChanges();

}
catch(Exception ex)
{
if(Objtrans != null)
{
Objtrans.Rollback("Categoria");
}
throw new Exception(ex.ToString());
}
finally
{
sqlConnection1.Close();
}

}

Saludos

Andres
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:sqlTransaction rollback()

Publicado por Gino (1 intervención) el 27/02/2009 17:35:04
Para ejemplo de visualizar su funcionamiento esta bien, pero no es útil en la vida real. Lo recomendable es que en la capa DAL, se reciba por parametro la referencia a la transacción y desde la capa de Logica de negocio se inicialice las transacciones. La capa de Negocios no tiene que ser una Interface de la capa DAL, como en la mayoria de aplicacaciones he visto hasta el momento, sino tiene que ser funcional como tal.

Saludos,

Gino
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar