例外:当使用CreateDocumentUri和分区文档db时,提供了分区键....

时间:2018-02-02 20:03:23

标签: c# azure azure-cosmosdb

当我有分区收藏时,

DeleteDocumentAsyncReadDocumentAsync不适合我。我使用了RequestOptions

await client.DeleteDocumentAsync(document.SelfLink, new RequestOptions { 
    PartitionKey = new PartitionKey("mykey")
}).ConfigureAwait(false); // This works.

var uri = UriFactory.CreateDocumentUri("db", "coll", "id1");

await client.DeleteDocumentAsync(uri, new RequestOptions { 
    PartitionKey = new PartitionKey("mykey")
}).ConfigureAwait(false); // This throws
  

提供的分区键要么与集合中的定义不对应,要么与文档中指定的分区键字段值不匹配。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我尝试了一段抛出异常的代码片段,它对我有用。

我认为你误解了partitionkeyRequestOptions属性的含义。

例如,我的容器创建如下:

enter image description here

分区键是" name"我的收藏在这里。您可以检查收藏夹的分区键。

我的文件如下:

{
    "id": "1",
    "name": "jay"
}

{
    "id": "2",
    "name": "jay2"
}

我的partitionkey&#39; name&#39; ,所以我在这里有两个分区:&#39; jay&#39; 和<强>&#39; jay1&#39;

所以,在这里你应该将partitionkey属性设置为&#39; jay&#39;或者&#39; jay2&#39;,而不是&#39; name&#39;。

var uri = UriFactory.CreateDocumentUri("db", "part", "1");

                client.DeleteDocumentAsync(uri, new RequestOptions
                {
                    PartitionKey = new PartitionKey("jay")
                }).ConfigureAwait(false); 

希望它对你有所帮助。