У меня есть код внутри моего класса 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?
@ Стив, это была опечатка ... это System.Transactions.Transaction.Current.





Когда транзакция была отменена или зафиксирована, ее нельзя использовать повторно. Создайте новый.
Пример кода здесь: https://docs.microsoft.com/en-gb/dotnet/api/system.transactions.transactionscope?view=netframework-4.7
TransactionScope.Current? Мне неизвестны какие-либо статические методы или свойства на TransactionScope класс. Не могли бы вы объяснить, что такое TransactionScope в вашем коде?