Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Cosmo Sql Db-使用延续标记查询数据永远不会完成_C#_.net_Azure_Azure Cosmosdb - Fatal编程技术网

C# Cosmo Sql Db-使用延续标记查询数据永远不会完成

C# Cosmo Sql Db-使用延续标记查询数据永远不会完成,c#,.net,azure,azure-cosmosdb,C#,.net,Azure,Azure Cosmosdb,我的数据库中有来自租户Id标识的多个数据源的数据。一个租户有数百万条记录,另一个只有75条记录,如下面的屏幕截图所示 当我使用以下代码查询数据时 var count = continuationToken?.Count ?? ContinuationToken.DefaultPageCount; var feedOptions = new FeedOptions { EnableCrossPartitionQuery = true,

我的数据库中有来自租户Id标识的多个数据源的数据。一个租户有数百万条记录,另一个只有75条记录,如下面的屏幕截图所示

当我使用以下代码查询数据时

  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);
var count=continuationToken?.count??ContinuationToken.DefaultPageCount;
var feedOptions=新的feedOptions
{
EnableCrossPartitionQuery=true,
MaxItemCount=计数,
RequestContinuation=continuationToken?.NextRowKey
};
var query=sortByAscending
? _CreateDocumentQuery(_collection.DocumentsLink,feedOptions).Where(过滤器).OrderBy(订单).AsDocumentQuery()
:_client.CreateDocumentQuery(_collection.DocumentsLink,feedOptions).Where(过滤器).OrderByDescending(顺序).AsDocumentQuery();
var feedResponse=await query.ExecuteNextAsync();
var items=feedResponse.AsEnumerable().ToList();
var nextPageToken=feedResponse.ResponseContinuation;
返回新的ContinuationTokenData(items,items.Count,nextPageToken,Count);
过滤器位于租户Id上。租户的前2页(每页25条记录)数据很好地返回。但是,当它到达最后25条记录时,continuation令牌不断重复旧值,如下面所示


你知道如何修复这个问题还是这是一个CosmoDb错误?谢谢

当令牌为空时,它实际上意味着没有延续(如请求2和4中所示)


如果您发送FeedOptions RequestContinuation=null,它将始终返回第一页。

当令牌为null时,实际上意味着没有继续(如请求2和4)


如果您发送FeedOptions RequestContinuation=null,它将始终返回第一页。

continuation标记设置正确,它是一个复合值,如屏幕截图所示。返回的数据页不是第一页。它在筛选条件的最后一页和最后一页之间交替显示。当发出第一个请求(RequestContinuation=null)时,第一页数据按预期返回到了TOAN,您发现问题出在哪里了吗?嗨,Olga。我还没有找到问题所在。我遵循文档,只是提取了延续令牌,不知怎的Azure只是重复了令牌!这部分代码看起来还不错。请你在哪里做分页循环,在哪里定义了过滤器和顺序变量,可以发布更多的代码吗。您使用什么索引策略?延续标记设置正确,它是一个复合值,如屏幕截图中所示。返回的数据页不是第一页。它在筛选条件的最后一页和最后一页之间交替显示。当发出第一个请求(RequestContinuation=null)时,第一页数据按预期返回到了TOAN,您发现问题出在哪里了吗?嗨,Olga。我还没有找到问题所在。我遵循文档,只是提取了延续令牌,不知怎的Azure只是重复了令牌!这部分代码看起来还不错。请你在哪里做分页循环,在哪里定义了过滤器和顺序变量,可以发布更多的代码吗。您使用什么索引策略?