C# Cosmo Sql Db-使用延续标记查询数据永远不会完成
我的数据库中有来自租户Id标识的多个数据源的数据。一个租户有数百万条记录,另一个只有75条记录,如下面的屏幕截图所示 当我使用以下代码查询数据时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,
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只是重复了令牌!这部分代码看起来还不错。请你在哪里做分页循环,在哪里定义了过滤器和顺序变量,可以发布更多的代码吗。您使用什么索引策略?