Как определить, принадлежит ли SQLConnection к текущей внешней транзакции System.Transactions.Transaction.Current?

Я хочу знать, является ли данный SQLConnection включенным в текущую внешнюю транзакцию в заданное время, я имею в виду, помещая что-то в часы во время отладки, что позволяет мне узнать, одно соединение зачислено с текущей внешней транзакцией. Я отлаживаю код, который создает несколько экземпляров класса TransactionScope, и код не вызывает ни TransactionScope.Complete, ни TransactionScopeDispose до создания новых экземпляров TransactionScope. Так что, если бы я мог знать, включен ли данный SQLConnection в текущий ambient transaction, было бы очень полезно.

Кстати, TransactionScope не создается с использованием usingstatement, поэтому трудно понять, читая код, что SQLConnection принадлежит какому TransactionScope экземпляру.


person Community    schedule 09.12.2014    source источник


Ответы (1)


Включенная в список транзакция сохраняется в EnlistedTransaction поле SqlInternalConnection . Это поле задается здесь, в методе EnlistNonNull. Вы можете получить доступ к этому полю с помощью отражения.

person Jared Moore    schedule 26.05.2015