Как да определите дали 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 a>. Това поле е зададено тук в метода EnlistNonNull. Можете да получите достъп до това поле с отражение.

person Jared Moore    schedule 26.05.2015