从DocumentDb获取价值不起作用Web API 2 + c#

时间:2017-05-11 14:35:54

标签: asp.net-web-api azure-cosmosdb

我正在使用带有Azure DocumentDb的Web API 2。 我编写了这段代码来调用匹配字符串的第一个文档:

var x = this.client.CreateDocumentQuery<Product>((await this.collection).DocumentsLink)
             .Where(x => x.Name == "Hello1")
             .AsEnumerable()
             .FirstOrDefault();

但结果始终为null。

SelfLink和DocumentsLink的值均为:

(await this.collection).SelfLink = "dbs/h4IDAA==/colls/h4IDAPEiOAA=/";
(await this.collection).DocumentsLink= "dbs/h4IDAA==/colls/h4IDAPEiOAA=/docs/";

代码正在连接到DocumentDb,添加文档或更新没有问题。

我的代码中有什么问题?

1 个答案:

答案 0 :(得分:0)

根据您的代码,我已在我身边测试过,这是我的代码段:

public IHttpActionResult Get()
{
    var doc = client.CreateDocumentQuery<GroupedSales>(UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId))
                    .Where(x => x.Site == 2)
                    .AsEnumerable()
                    .FirstOrDefault();
    return Json(doc);
}

结果:

enter image description here

为了解决此问题,您可以利用Fiddler捕获网络跟踪,如下所示:

enter image description here

您需要检查查询请求中的query有效内容和详细响应。对于您的查询,我认为您的query看起来像SELECT * FROM root WHERE (root[\"Name\"] =\"Hello1\")。此外,您可以在Azure门户中使用DocumentDB Query Explorer来检查您的查询是否可以检索您的集合下的预期文档。