Я пытаюсь вернуть результаты подкачки на запрос от CosmosDB. Я видел этот пример из здесь , но я не уверен, что делать с переменной response
.
// Fetch query results 10 at a time.
var queryable = client.CreateDocumentQuery<Book>(collectionLink, new FeedOptions { MaxItemCount = 10 });
while (queryable.HasResults)
{
FeedResponse<Book> response = await queryable.ExecuteNext<Book>();
}
Должен ли я вернуть его напрямую? Или я должен сделать что-то еще с переменной response
? Я пытался вернуть переменную ответа напрямую, и она не работает. Вот мой код:
public async Task<IEnumerable<T>> RunQueryAsync(string queryString)
{
var feedOptions = new FeedOptions { MaxItemCount = 3 };
IQueryable<T> filter = _client.CreateDocumentQuery<T>(_collectionUri, queryString, feedOptions);
IDocumentQuery<T> query = filter.AsDocumentQuery();
var response = new FeedResponse<T>();
while (query.HasMoreResults)
{
response = await query.ExecuteNextAsync<T>();
}
return response;
}
Обновление :
Прочитав ответ @Evandro Paula, я следовал по URL и изменил свою реализацию на нижеприведенную. Но он все еще дает мне 500 кодов статуса:
public async Task<IEnumerable<T>> RunQueryAsync(string queryString)
{
var feedOptions = new FeedOptions { MaxItemCount = 1 };
IQueryable<T> filter = _client.CreateDocumentQuery<T>(_collectionUri, queryString, feedOptions);
IDocumentQuery<T> query = filter.AsDocumentQuery();
List<T> results = new List<T>();
while (query.HasMoreResults)
{
foreach (T t in await query.ExecuteNextAsync())
{
results.Add(t);
}
}
return results;
}
А вот и сообщение об исключении:
Требуется перекрестный раздел, но он отключен. Пожалуйста, установите
x-ms-documentdb-query-enablecrosspartition в true, укажите
x-ms-documentdb-partitionkey, или пересмотрите ваш запрос, чтобы избежать этого
исключение., Windows / 10.0.17134 documentdb-netcore-sdk / 1.9.1
Обновление 2 :
Я добавил EnableCrossPartitionQuery
к истине, и я могу получить ответ от CosmosDB. Но я не могу получить 1 предмет, который я определил. Вместо этого я получил 11 предметов.