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