С http://entityframework.codeplex.com/workitem/1712
TransactionScope использует удаленные вызовы API, а не команды SQL для выполнения транзакций в SQL Server. Эти вызовы API не включены в стандартную трассировку в SQL Profiler.
Вы можете включить их, перейдя на страницу «Выбор событий», установив флажок «Показать все события» и выбрав все события из категории «Операции». Это позволит вам увидеть, когда на самом деле происходят такие события, как «TM: Begin Tran Starting», «SQLTransaction» и «TM: Begin Tran Completed».
Вы также можете проверить столбец TransactionID для событий TSQL на странице «Выбор события», чтобы увидеть, с какой транзакцией связан каждый выполняемый пакет SQL.
К сожалению, я не знаю прямого способа наблюдать эффективный уровень изоляции, при котором каждая команда выполняется в SQL Profiler. Но есть и косвенный путь ...
Когда соединение открыто, в трассировке вы увидите событие «Audit Login». Во многих случаях это событие будет содержать уровень изоляции. Теперь «Аудит входа в систему» происходит до того, как установлен фактический уровень изоляции, поэтому сообщаемый уровень изоляции не будет точно отражать уровень изоляции транзакции, которая должна начаться. Вот несколько советов о том, как это интерпретировать:
Когда открытие соединения действительно достигает нового соединения, оно всегда сообщает об уровне изоляции транзакции по умолчанию, например, вы увидите «установить уровень изоляции транзакции для чтения незафиксированным» (как я уже сказал, это не связано с эффективным уровнем изоляции вашей транзакции, так как он будет установлен позднее)
После того, как соединение было открыто и затем возвращено в пул соединений (то есть закрыто), последующие открытия соединения будут фактически повторно использовать это существующее соединение из пула. В этом случае 'Audit Login' сообщит об уровне изоляции, который был установлен, когда соединение было возвращено в пул в последний раз. Это может помочь вам увидеть уровень изоляции, который был использован, по факту.
Например. в вашем фрагменте кода соединение открыто в последний раз для отката транзакции (потому что вы не пометили транзакцию как выполненную явно). В этом событии «Audit Login» вы должны увидеть уровень изоляции, который действовал, когда соединение ранее использовалось для выполнения запроса, представленное строкой «установить уровень изоляции транзакции read uncommitted».