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)) 
{
}
Другие вопросы по тегам