CosmosDb c#SDK的工作方式与Rest Api的工作方式不同
我正在将CosmosDb Sdk与nugetCosmosDb c#SDK的工作方式与Rest Api的工作方式不同,c#,azure,azure-cosmosdb,C#,Azure,Azure Cosmosdb,我正在将CosmosDb Sdk与nugetMicrosoft.Azure.DocumentDB.Core 2.1.0和.NetStandard 2.0一起使用 我正在使用此查询获取文档 var client client = new DocumentClient(new Uri(config.CosmosDbEndPointUrl), config.CosmosDbPrimaryKey); var partitionKey = "siteId"; // the partition key is
Microsoft.Azure.DocumentDB.Core 2.1.0
和.NetStandard 2.0
一起使用
我正在使用此查询获取文档
var client client = new DocumentClient(new Uri(config.CosmosDbEndPointUrl), config.CosmosDbPrimaryKey);
var partitionKey = "siteId"; // the partition key is defined as /siteId, I tried both, still not working
var queryOptions = new FeedOptions
{
MaxItemCount = 500,
EnableCrossPartitionQuery = true,
PartitionKey = new PartitionKey(partitionKey)
};
var auditQuery = client
.CreateDocumentQuery<AuditDTO>(
UriFactory.CreateDocumentCollectionUri(_databaseName, _collectionName), queryOptions)
.Where(f => f.Status == AuditStatus.Pending)
.AsDocumentQuery();
var results = new List<AuditDTO>();
while (auditQuery.HasMoreResults)
{
var audits = await auditQuery.ExecuteNextAsync<AuditDTO>();
results.AddRange(audits);
}
使用RESTAPI会像我期望的那样返回1个文档
我试图反序列化对AuditDTO类的响应,它是有效的,因此,我的模型没有问题
我不明白为什么RESTAPI工作,而不是.NETSDK
没有授权异常,没有错误消息。我刚得到0个文档
我错过了什么
var partitionKey = "siteId";
var queryOptions = new FeedOptions
{
MaxItemCount = 500,
EnableCrossPartitionQuery = true,
PartitionKey = new PartitionKey(partitionKey)
};
您的问题出在分区键上。
分区键应该是分区键的值,而不是定义
这意味着FeedOptions
上的partitionKey
值应该是这样的59c49da3-b398-4db7-aff4-d2129353e3a8
(假设它是一个guid),而不是这个siteId
正确的FeedOptions对象如下所示:
var partitionKey = "59c49da3-b398-4db7-aff4-d2129353e3a8";
var queryOptions = new FeedOptions
{
MaxItemCount = 500,
EnableCrossPartitionQuery = true,
PartitionKey = new PartitionKey(partitionKey)
};
这些文件确实有误导性 要使跨分区查询能够查询所有分区,只需将
enableCrospartitionQuery
设置为true即可
var queryOptions = new FeedOptions
{
MaxItemCount = 500,
EnableCrossPartitionQuery = true
};
正如Nick Chapsas所说,如果需要搜索特定分区,请将PartitionKey
属性设置为要搜索的分区的值
这是我在Azure GitHub上找到的
var queryOptions = new FeedOptions
{
MaxItemCount = 500,
EnableCrossPartitionQuery = true
};