Как использовать SqlAzureExecutionStrategy и «Nolock»

Чтобы справиться с таймаутами SQL, я пытаюсь использовать SqlAzureExecutionStrategy (https://msdn.microsoft.com/en-us/data/dn456835.aspx)

Проблема, с которой я сталкиваюсь, заключается в том, что она предотвращает «инициируемые пользователем транзакции», которые, как представляется, являются рекомендуемым способом реализации «with (nolock)» в EF (http://www.hanselman.com/blog/GettingLINQToSQLAndLINQToEntitiesToUseNOLOCK.aspx, NOLOCK с Linq to SQL).

пример кода

    public AspnetUser GetAspnetUserByUserName(string userName)
    {
        using (var tx = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions() { IsolationLevel = IsolationLevel.ReadUncommitted }))
        {
            return context.AspnetUsers.Where(x => x.UserName == userName).FirstOrDefault();
        }
    }

выдает ошибку

Настроенная стратегия выполнения 'SqlAzureExecutionStrategy' не поддерживает инициированные пользователем транзакции. Увидетьhttp://go.microsoft.com/fwlink/?LinkId=309381 для дополнительной информации.

Я видел ответы, в которых говорится, что нужно отключить SqlAzureExecutionStrategy для каждого вызова, но это лишило бы смысла его использование, если бы все мои чтения игнорировали стратегию. Возможно иметь как "NoLock", так и SqlAzureExecutionStrategy.

Ответы на вопрос(1)

Ваш ответ на вопрос