Я использую оператор выбора LINQ, заключенный в TransactionScope (для изменения блокировки), но, согласно SQL Profiler, он, похоже, не работает.Мой код выглядит так:
using (var ts = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadUncommitted} ))
{
using (myDBDataContext dbPKC = new myDBDataContext(conn))
{
...query...
ts.Complete();
return xmlMachine;
}
}
Теперь я ожидаю, что SQL Profiler покажет BatchStarting и BatchComplete для моего оператора select.Но это показывает RPC: Завершено.Зачем?когда я запускаю этот код:
using (SqlConnection conn1 = new SqlConnection())
{
conn1.ConnectionString = WebConfigurationManager.ConnectionStrings["myConnectionString"].ToString(); ;
conn1.Open();
using (SqlTransaction trans1 = conn1.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted))
{
SqlCommand cmd = new SqlCommand("select * from Machines where pkID = 5");
cmd.Connection = conn1;
cmd.Transaction = trans1;
SqlDataReader reader = cmd.ExecuteReader(); // just execute something
}
}
Он показывает BatchStarting и BatchComplete.Почему LINQ, похоже, не «видит» TransactionScope?
Также есть ли способ подтвердить, что мой уровень изоляции корректен через Profiler?Я вижу только начальный уровень изоляции подключения через Audit Login.«Обновление» не отображается, чтобы показать, что оно было изменено или что каждый уровень изоляции использует каждый запрос.
Любая помощь была бы замечательной!
Также этот код выполняется в WCF (3.5) служба подключения к SQL Server 2008