Cosmo Sql Db - запрос данных с использованием токенов продолжения никогда не завершается - PullRequest
0 голосов
/ 31 мая 2018

В моей базе данных есть данные, поступающие из нескольких источников, идентифицированных идентификатором клиента.В то время как у одного арендатора миллионы записей, у другого - всего 75 записей, как на скриншоте ниже enter image description here

Когда я запрашивал данные, используя следующий код

  var count = continuationToken?.Count ?? ContinuationToken.DefaultPageCount;
        var feedOptions = new FeedOptions
        {
            EnableCrossPartitionQuery = true,
            MaxItemCount = count,
            RequestContinuation = continuationToken?.NextRowKey
        };

        var query = sortByAscending
            ? _client.CreateDocumentQuery<T>(_collection.DocumentsLink, feedOptions).Where(filter).OrderBy(order).AsDocumentQuery()
            : _client.CreateDocumentQuery<T>(_collection.DocumentsLink, feedOptions).Where(filter).OrderByDescending(order).AsDocumentQuery();

        var feedResponse = await query.ExecuteNextAsync<T>();
        var items = feedResponse.AsEnumerable().ToList();
        var nextPageToken = feedResponse.ResponseContinuation;

        return new ContinuationTokenData<T>(items, items.Count, nextPageToken, count);

с фильтром находится на Арендаторе Id.Данные вернулись для арендатора за первые 2 страницы (25 записей на страницу).Однако, когда он добрался до последних 25 записей, токен продолжения повторял старое значение, как вы можете видеть ниже enter image description here

Знаете ли вы, как исправить это или этоошибка CosmoDb?Спасибо

1 Ответ

0 голосов
/ 31 мая 2018

Когда токен нулевой, это фактически означает, что продолжения нет (как в запросах 2 и 4).

Если вы отправите в FeedOptions RequestContinuation = null, он всегда вернет первую страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...