ExecuteNextAsync не работает

Я работаю с Azure DocumentDB. Я смотрю на операцию ExecuteNextAsync. Я вижу, что ExecuteNextAsync не возвращает результатов. Я использую примеры, которые я нашел в Интернете, и не генерирую никаких результатов. Если я вызываю операцию перечисления на исходный запрос, результаты возвращаются. Есть ли пример, показывающий полную конфигурацию для использования ExecuteNextAsync?

Обновление Чтобы быть более явным, я не получаю никаких результатов. Вызов, кажется, просто выполняется, и ошибка не генерируется.

Поиграв с определением коллекции, я обнаружил, что когда я установил размер коллекции в 250 ГБ, это произошло. Я проверил с коллекцией до 10 ГБ, и она некоторое время работала. Последнее тестирование показывает, что операция снова зависает.

У меня есть две коллекции сгенерированы. Первая коллекция работает правильно. Похоже, что второй сбой в этой операции.

1 ответ

Индивидуальные звонки на ExecuteNextAsync может вернуть 0 результатов, но когда вы выполните запрос до его завершения, вызывая его до HasMoreResults ложь, вы всегда получите полный результат.

Почти всегда один звонок ExecuteNextAsync вернет результаты, но вы можете получить 0 результатов, как правило, по двум причинам:

  • Если запрос является сканированием, то DocumentDB выполнит частичный прогресс на основе доступной пропускной способности. Здесь результаты не возвращаются, но новый токен продолжения, основанный на последнем прогрессе, возвращается для возобновления выполнения.
  • Если это перекрестный запрос, то каждый вызов выполняется для одного раздела. В этом случае вызов не даст результатов, если в этом разделе нет документов, соответствующих запросу.

Если вы хотите, чтобы запросы детерминистически возвращали результаты, вы должны использовать SELECT TOP против использования токена продолжения /ExecuteNextAsync как механизм подкачки. Вы также можете прочитать результаты запроса параллельно между несколькими разделами, изменив FeedOptions.MaxDegreeOfParallelism до -1.

Другие вопросы по тегам