TransactionScopeAsyncFlowOption и уровень изоляции?
Я использую Entity Framework 6.1 в службе WCF и хотел окружить свой запрос SELECT уровнем изоляции READ UNCOMMITTED, поскольку в таблицу, которую я читаю, будут вставлены другие пакетные обновления, и я не хочу блокировать эти пакетные обновления. когда READ выполняется на столе. Это в основном имитирует SELECT WITH NOLOCK.
Этот код также использовался асинхронно. Следовательно, я не мог просто использовать TransacactionScope. Обратите внимание, что я также использую.Net 4.5.1 framework.
Я мог бы установить уровень изоляции на TransactionScope равным ReadUncommitted, но TransactionScopeOption по умолчанию имеет значение ReadCommitted. Я не вижу способа изменить уровень изоляции.
Есть ли способ изменить уровень изоляции? Если я не могу установить уровень изоляции, можно ли будет выполнять мой запрос при указанных выше обстоятельствах.
На самом деле, если я не могу установить уровень изоляции на "NOLOCK", мне нет необходимости даже включать TransactionScopeAsyncFlowOption.
1 ответ
Используйте опцию конструктора с TransactionScopeAsyncFlowOption, указанным в качестве третьего параметра, а не первого:
using (var scope = new TransactionScope(
TransactionScopeOption.Required,
new TransactionOptions { IsolationLevel = IsolationLevel.ReadUncommitted },
TransactionScopeAsyncFlowOption.Enabled))
{
}