Cómo comprobar si la transacción se deshace Dotnet?
-
10-10-2019 - |
Pregunta
¿Cómo puedo comprobar si una transacción dotnet está cerrado o no?
Solución
using(TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew)){
try{
//Do something;
scope.Complete(); //denotes the transaction completed successful.
}
catch(TransactionAbortedException ex)
{
//scope.Complete(); is never called, the transaction rolls back automatically.
}
catch(ApplicationException ex)
{
}
}
Otros consejos
Su título le pide una cosa y hace otra pregunta. Por lo tanto, voy con el título.
Si desea saber si la transacción se revierte o conjunto de revertir única, se puede comprobar
transaction.WasRolledBack // true if transaction is rolled back
Aquí, transaction
es una instancia de ITransaction
Editar (basado en su comentario)
var isRolledBack = false;
using (var connection = new SqlConnection())
{
using (var transaction = connection.BeginTransaction())
{
try
{
// do your stuff here with transaction
}
catch (Exception ex)
{
transaction.Rollback();
isRolledBack = true;
throw;
}
}
}
Ahora, se puede comprobar la bandera isRolledBack
para ver si la transacción se revierte
Si se encuentra en el servidor SQL, puede utilizar DBCC OPENTRAN
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow