Это беспокоит!
В статье Билла Вогана, на которую вы ссылаетесь, говорится, что «... каждый TransactionScope получает свой собственный пул», но код в статье поддержки, на которую вы ссылаетесь, предполагает, что это не так, поскольку второй запуск NoTxScope()
получает подключение из пула, который использовал повышенный уровень изоляции.
Вы можете «форсировать» проблему с помощью [я рисую код из первой ссылки]:
static void ForceReadCommitedScope()
{
TransactionOptions op = new TransactionOptions();
op.IsolationLevel = IsolationLevel.ReadCommitted;
using (TransactionScope tx = new TransactionScope(TransactionScopeOption.RequiresNew, op))
{
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=master;Integrated Security=True;");
SqlCommand com = new SqlCommand("select transaction_isolation_level from sys.dm_exec_sessions where (session_id = @@SPID)", con);
con.Open();
short level = (short)com.ExecuteScalar();
Console.WriteLine("transaction_isolation_level : " + level.ToString());
con.Close();
tx.Complete();
}
}
или добавив "..;Pooling=False"
в строку подключения.