InvalidOperationException при вызове Transaction.Current

У меня есть код внутри моего класса DatabaseClient, который проверяет, существует ли активный TransactionScope, проверяя свойство ThreadStatic, Transaction.Current:

if (Transaction.Current == null)
{
    // open a new connection and do things
}

У меня есть код, потребляющий этот класс, который создает TransactionScope, выполняет две операции с базой данных, а затем завершает его. Затем приложение переходит к дальнейшей работе с базой данных. Но теперь, когда он вызывает код выше, я получаю исключение:

System.InvalidOperationException: The current TransactionScope is already complete.

Что мне нужно сделать, чтобы "сбросить" текущую транзакцию, чтобы я мог снова безопасно проверить Transaction.Current?

1 ответ

Когда транзакция откатывается или фиксируется, ее нельзя использовать повторно. Создать новый.

Пример кода здесь: https://docs.microsoft.com/en-gb/dotnet/api/system.transactions.transactionscope?view=netframework-4.7

Другие вопросы по тегам