transacciones
Publicado por Oscar (19 intervenciones) el 20/10/2009 18:08:11
Hola,
Tengo una función para ejecutar transacciones con la conexión oledb. El problema es que al ejecutar dos hilos con la misma conexión esta función me da un error de que oledb no admite transacciones paralelas. Mi pregunta es si hay alguna forma de saber si la conexión está ejecutando una trasacción para que espere a que termine.
La función:
public bool ExecuteTransaction(List<string> conNonQuery)
{
OleDbCommand command = new OleDbCommand();
OleDbTransaction transaction = null;
// Set the Connection to the new OleDbConnection.
command.Connection = con;
// Open the connection and execute the transaction.
try
{
if (!getState())
Open();
// Start a local transaction with ReadCommitted isolation level.
transaction = con.BeginTransaction(IsolationLevel.ReadCommitted);
// Assign transaction object for a pending local transaction.
command.Connection = con;
command.Transaction = transaction;
foreach (string s in conNonQuery)
{
command.CommandText = s;
command.ExecuteNonQuery();
}
// Commit the transaction.
transaction.Commit();
return true;
}
Un saludo
Tengo una función para ejecutar transacciones con la conexión oledb. El problema es que al ejecutar dos hilos con la misma conexión esta función me da un error de que oledb no admite transacciones paralelas. Mi pregunta es si hay alguna forma de saber si la conexión está ejecutando una trasacción para que espere a que termine.
La función:
public bool ExecuteTransaction(List<string> conNonQuery)
{
OleDbCommand command = new OleDbCommand();
OleDbTransaction transaction = null;
// Set the Connection to the new OleDbConnection.
command.Connection = con;
// Open the connection and execute the transaction.
try
{
if (!getState())
Open();
// Start a local transaction with ReadCommitted isolation level.
transaction = con.BeginTransaction(IsolationLevel.ReadCommitted);
// Assign transaction object for a pending local transaction.
command.Connection = con;
command.Transaction = transaction;
foreach (string s in conNonQuery)
{
command.CommandText = s;
command.ExecuteNonQuery();
}
// Commit the transaction.
transaction.Commit();
return true;
}
Un saludo
Valora esta pregunta


0