Come controllare se Dotnet transazione viene annullata?
-
10-10-2019 - |
Domanda
Come controllo Posso se una transazione dotnet è chiusa o no?
Soluzione
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)
{
}
}
Altri suggerimenti
Il titolo chiede una cosa e la tua domanda chiede ad un altro. così, sto andando con il vostro titolo.
Se volete sapere se la transazione viene annullata o un set di rollback solo, è possibile controllare
transaction.WasRolledBack // true if transaction is rolled back
Qui, transaction
è un'istanza di ITransaction
Modifica (sulla base di tuo commento) :
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;
}
}
}
Ora, è possibile controllare il flag isRolledBack
per vedere se la transazione viene annullata ??p>
Se siete su SQL Server, è possibile utilizzare DBCC OPENTRAN
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow