Problemas con SQLTransaction
tema enviado por Hiatomx en C#
tema iniciado el 30/03/2011
Hola, mi duda es la siguiente:
Requiero hacer varios inserts dentro de una tabla en SQLServer. Tengo varias clases:
Clase A
Clase B
Clase C
Clase Funciones.
Dentro de clase funciones genero los objetos A,B y C. Dependiendo varias condiciones, despues de crear A, se puede crear varios objetos B y uno o varios objetos C. Dentro de la clase A, B y C hay una clase que genera el query. Esta es la estructura:
public insertar(SqlTransaction transaction){
sql = "UPDATE ...";
try{
SqlCommand _command = new SqlCommand();
_command.Connection = transaction.Connection;
_command.CommandType = CommandType.Text;
_command.CommandText = sql;
_command.Transaction = transaction;
_command.ExecuteNonQuery();
}catch (Exception ex){
}
}
Dentro de la clase Funciones tengo el metodo que genera el Transaction:
public SqlTransaction CreateTransaction(){
try{
SqlConnection _connection;
_connection = new SqlConnection ("Data Source=...;Initial Catalog=...;User Id=...;Password=...");
_connection.Open();
SqlTransaction _transaction = _connection.BeginTransaction();
return _transaction;
}catch{
throw;
}
}
Y dentro de funciones tengo un try donde van la generacion de los objetos y la llamada a insertar(), y hasta al final tengo el commit.
SqlTransaction _transaction = CreateTransaction();
try{
A();
A.insertar(_transaction);
B();
B.insertar(_transaction);
C();
C.insertar(_transaction);
_transaction.commit();
}catch(){
_transaction.Rollback();
}
El problema surge cuando al momento de insertar B me manda el siguiente error:
System.InvalidOperationException: SqlTransaction se completo, ya no se puede utilizar.
Si me pueden ayudar se los agradeceré mucho. Gracias.