我有标准的代码行,用分页来获取数据。它曾经工作到一个月前,然后停止。在运行ExecuteNextAsync()时,它会停止执行,并在“输出”窗口中显示以下信息:
DocDBTrace信息:0:处理了ID为2的DocumentClient。
DocDBTrace信息:0:处理了ID为1的DocumentClient。
不工作代码:
var query =
client.CreateDocumentQuery(
UriFactory.CreateDocumentCollectionUri(databaseId, "TestCollection"), "select c.id from TestCollection c",
new FeedOptions
{
//MaxDegreeOfParallelism=-1,
MaxItemCount = maxItemCount,
PopulateQueryMetrics=true
//RequestContinuation = requestContinuation,
//EnableScanInQuery = true,
//EnableCrossPartitionQuery = true
});
var queryAll = query.AsDocumentQuery();
var results = new List<TDocument>();
while (queryAll.HasMoreResults)
{
try
{
var result = await queryAll.ExecuteNextAsync();
var queryMetrics = result.QueryMetrics;
if (result.ResponseContinuation != null) requestContinuation = result.ResponseContinuation;
//Do something here
}
catch (Exception ex)
{
}
}
对于同一客户端对象,创建/更新或一起提取所有项目都有效。所以JsonSerializer或DocumentClient对象不能成为问题。 工作代码:
var query2 = client.CreateDocumentQuery(
UriFactory.CreateDocumentCollectionUri(databaseId, collectionName), "select * from TestCollection c",
new FeedOptions { MaxItemCount = -1 });
//.Where(l => l.Id == qId);
var testData2= query2.ToList();
这已经停止了我们的服务及其发展。任何帮助表示赞赏。
答案 0 :(得分:0)
您的查询错误。
UriFactory.CreateDocumentCollectionUri(databaseId, "TestCollection")
已经让SDK知道要查询的内容。
如果你只是改变
select c.id from TestCollection c
到
select c.id from c
它会起作用。目前它无法解析c别名,因为那里也有TestCollection。
使用*
的其他查询有效的唯一原因是您没有使用c.
。