Как проверить, была ли откатана транзакция Dotnet?
-
10-10-2019 - |
Вопрос
Как я могу проверить , закрыта транзакция dotnet или нет ?
Решение
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)
{
}
}
Другие советы
Ваш заголовок задает одно, а ваш вопрос - другое.итак, я придерживаюсь вашего титула.
Если вы хотите узнать, была ли транзакция откатана или установлена только для отката, вы можете проверить
transaction.WasRolledBack // true if transaction is rolled back
Здесь, transaction
является экземпляром ITransaction
Редактировать (на основе вашего комментария):
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;
}
}
}
Теперь вы можете проверить isRolledBack
установите флажок, чтобы увидеть, была ли транзакция откатана
Если вы находитесь на SQL Server, вы можете использовать DBCC OPENTRAN
Не связан с StackOverflow