Что мне не хватает?
Я пытаюсь читать с NOLOCK, используя TransactionScope следующим образом:
var scopeOptions = new TransactionOptions { IsolationLevel = IsolationLevel.ReadUncommitted };
using (var scope = new TransactionScope(TransactionScopeOption.Required, scopeOptions))
{
using (var db = new MyDbContext(ConnectionStringEntities))
{
// Simple read with a try catch block...
}
scope.Complete();
}
Я ожидал увидеть с добавлением NOLOCK к SQL-запросу (ищу в SQL Profiler, а также настраиваемый DbCommandInterceptor - но его там нет ...
ОБНОВЛЕНИЕ: после дополнительных исследований мне интересно, используется ли выбранный курсор в конце концов, просто без «подсказки» NOLOCK (специфичный для SQL Server, а также специфичный только для одной таблицы), я нашел несколько код, который получает текущую транзакцию и, кажется, показывает правильно выбранную изоляцию транзакции (ReadUncommitted / Serializable и т. д.) Я все еще хочу протестировать его, но дайте мне знать, если у вас есть какие-либо мысли
Получить текущий уровень изоляции TransactionScope .net
Transaction trans = Transaction.Current;
System.Transactions.IsolationLevel level = trans.IsolationLevel;
LogService.Instance.Debug($"Transaction IsolationLevel = {level.ToString()}");