/ / Pregunta sobre TransactionScope en .NET - c #, .net, servidor SQL, transacciones, transacciones

Pregunta sobre TransactionScope en .NET - c #, .net, servidor SQL, transacciones, transacciones

using (TransactionScope scope = new TransactionScope())
{
int updatedRows1 = custPh.Update(cust.CustomerID, tempPh1, 0);
int updatedRows2 = custPh.Update(cust.CustomerID, tempPh2, 1);
int updatedRows3 = cust.Update();

if (updatedRows1 > 0 && updatedRows2 > 0 && updatedRows3 > 0)
{
scope.Complete();
}
}

¿El código de TransactionScope anterior está estructurado correctamente? Esta es la primera vez que lo uso, así que estoy tratando de hacer lo más simple posible.

Respuestas

8 para la respuesta № 1

Cerraduras bien,

Pero lo que estás haciendo es un mal diseño. Básicamente, está haciendo una reversión si no todas las tablas tienen filas actualizadas. Nunca sabrás si tu transacción se completó o falló. Lo que podría hacer que resolver un error sea un dolor.

Preferiría lanzar la excepción si algo saliera mal. Eso llevaría a una reversión, también. porque alcance.Completo () nunca se alcanza.

using (TransactionScope scope = new TransactionScope())
{
int updatedRows1 = custPh.Update(cust.CustomerID, tempPh1, 0);
int updatedRows2 = custPh.Update(cust.CustomerID, tempPh2, 1);
int updatedRows3 = cust.Update();

if (updatedRows1 == 0 || updatedRows2 == 0 || updatedRows3 == 0)
throw new Exception("Not all rows could be updated");

scope.Complete();
}