hola espero me puedan ayudar
tengo varias clase por ejemplo
Clase1, Clase2, Clase3, etc
cada una de las clases tiene un método llamado agregar() que ejecuta
un procedimiento almacenado que guarda en los datos almacenadas en sus
propiedades en una tabla y asi cada una de esas clase tiene un método
agregar() que es el que se encarga de guardar en la base de datos la
información contenida en sus propiedades.
ahora lo ke no sé es como haría el manejo de transacciones desde .net
porke lo ke kiero es iniciar la transacción desde la Clase1 es decir
public bool agregar(){
clase2.agregar(); /*cada una de estas son varibles de
instancia de una clase "X"
clase3.agregar(); /*y cada una de los métodos de guardar
ejecutan un procedimiento almacenado
clase4.agregar(); /* que guarda en la base de datos
}
lo ke kiero controlar es la transacción desde el cliente osea con .net
y no desde el procedimiento almacenado he estado leyendo algo pero
tengo muchas dudas como:
1. si cada uno de los métodos agregar() de las clases deben iniciar y
mantener una conexión con la base de datos he iniciar la transacción
2. en la web del guille encontré un código que resa como se ve abajo
pero
Dim Conn As SqlConnection = New SqlConnection("cadenadeconexion")
Conn.Open()
Dim myTrans As SqlTransaction
Dim Comando As SqlClient.SqlCommand
myTrans = Conn.BeginTransaction()
Try
Comando = New SqlClient.SqlCommand("INSERT INTO PERSONA (codigo,
nombres, sueldo, estado) Values('tr1','JOSE',200,'A')", Conn)
Comando.Transaction = myTrans
Comando.ExecuteNonQuery()
Comando = New SqlClient.SqlCommand("INSERT INTO PERSONA (codigo,
nombres, sueldo, estado) Values('tr2','LUIS',180,'B')", Conn)
Comando.Transaction = myTrans
Comando.ExecuteNonQuery()
Comando = New SqlClient.SqlCommand("INSERT INTO PERSONA (codigo,
nombres, sueldo, estado) Values('tr3','PEDRO',400,'A')", Conn)
Comando.Transaction = myTrans
Comando.ExecuteNonQuery()
myTrans.Commit()
MsgBox("Datos Ingresados")
Catch ex As Exception
myTrans.Rollback()
MsgBox(ex.Message)
End Try
Conn.Close()
viendo lo anterior kisiera hace algo como esto en mi aplicación pero
no Žse como
public class Clase1
private Clase2 clase2;
private Clase3 clase3;
private Clase4 clase4;
public bool agregar(){
try{
this.clase2.agregar(); /*cada una deberia ser una
transaccion
this.clase3.agregar(); /*en caso de que falle una se
deberián cancelar todas las transacciones
this.clase4.agregar();
}catch(Exception ex){
//*hacer el rollback si falló
}
}
espero le hayan entendido y gracias por sus respuestas y asesoramiento
Leer las respuestas