Transaciones Oracle

13/09/2007 - 17:48 por Item | Informe spam
Hola

¿Alguien puede explicarme porque tras iniciar una transación en la que
realizo varias operaciones de inserción y actualización, el Commit funciona
y el Rollback no?

Gracias

Preguntas similare

Leer las respuestas

#1 Enrique Catala Bañuls
23/09/2007 - 21:32 | Informe spam
Seguramente será porque estas utilizando varias conexiones. Si no englobas
bajo un TransactionScope las operaciones de los DataAdapters implicados , y
ademas les asignas la misma conexión a su propiedad _connection, estas
realizando cada operación en una conexión diferente con lo que cada una de
ellas responde a su propio commit, pero un rollback solo lo recibirá la
última en la que estes , el resto de inserts y updates ya se habran
"commiteado".

Lo que quiero decir es:

Primero les añades un método a tus datatables en el que sobreescribas el
sqlconnection con el que tu quieras.

public partial class TuTableAdapter
{
public AssignConnection(SqlConnection con)
{ _connection = con;}
}
public partial class TuTableAdapter2
{
public AssignConnection(SqlConnection con)
{_connection = con;}
}

y luego en tu código:
...
//Modificar los DataTables como sea
..
using (TransactionScope ts = new TransactionScope() )
{
SqlConnection con = new SqlConnection(cadenaconexion);
con.Open();
TuTableAdapter.AssignConnection(conexion);
TuTableAdapter2.AssignConnection(conexion);
...

TuTableAdapter.Update();
TuTableAdapter2.Update();
ts.Complete(); //esto es el commit
con.Close();
}

Salu2!
Atentamente, Enrique Catala Bañuls


"Item" wrote:

Hola

¿Alguien puede explicarme porque tras iniciar una transación en la que
realizo varias operaciones de inserción y actualización, el Commit funciona
y el Rollback no?

Gracias



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida