InvalidOperationException при вызове Transaction.Current - PullRequest
0 голосов
/ 01 мая 2018

У меня есть код внутри класса 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 Ответ

0 голосов
/ 02 мая 2018

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

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

...