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