Как использовать SQL-запрос с клиентом CosmosDB в приложении C# .NET Core 2.1 API

Я пытаюсь использовать хранилище Azure CosmosDB (ранее DocumentDB) в создаваемом мной API (я совсем новичок в C#). Мне удалось получить результат со всеми документами, используя метод client.CreateDocumentQuery, не передавая SQL-запрос к нему. Тем не менее, когда я передаю SQL-запрос, выполнение программы зависает, и контроллер отвечает 404. Я попытался добавить попытку, но не получаю никаких исключений или чего-либо еще.

Использование Microsoft.Azure.DocumentDB.Core версии 1.9.1.

Я перепробовал много вещей, другие методы, а также LINQ, но ничего не получалось. Если вы посмотрите на этот пример метода, не могли бы вы дать мне пример того, как правильно запрашивать и получать результат из коллекции документов? Я был бы очень признателен! ОБНОВЛЕНИЕ: Я немного обновил SQL. Попробовал с жестко закодированным параметром и проверил его в проводнике данных, где он работает. Казалось, что казнь останавливается *var feedResponse = await documentQuery.ExecuteNextAsync<JObject>();*

        // Document repository
    public async Task<IEnumerable<JObject>> GetDocsFromCollectionAsync(string someId)
        {
        DocumentClient client = new DocumentClient(new Uri(EndpointUrl), PrimaryKey); 
        IDocumentQuery<JObject> documentQuery;
        var documentCollectionUri = UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId);
        var queryOptions = new FeedOptions { MaxItemCount = -1 };

            if (someId.IsNullOrEmpty())
            {   
                // This works
                documentQuery = client.CreateDocumentQuery<JObject>(documentCollectionUri,queryOptions)
                    .AsDocumentQuery();
            } 
            else 
            {
                var query = new SqlQuerySpec(
                    "SELECT * FROM c WHERE c.someId = @someId",
                    new SqlParameterCollection(new SqlParameter[] { new SqlParameter { Name = "@someId", Value = someId } }));

                // This hangs during execution / returns 404 in the API controller
                documentQuery = client.CreateDocumentQuery<JObject>(documentCollectionUri, query, queryOptions)
                    .AsDocumentQuery();
            }

        List<JObject> documents = new List<JObject>();

            while (documentQuery.HasMoreResults)
            {
            var feedResponse = await documentQuery.ExecuteNextAsync<JObject>();
            documents.AddRange(feedResponse);
            }

            return documents; // Return documents to API controller
        }

0 ответов

Другие вопросы по тегам