"Resource Not Found" 从 documentdb 中删除文档时出错

"Resource Not Found" error on deleting document from documentdb

我在删除文档表单文档数据库时遇到问题。代码非常简单,我没有做任何花哨的事情。基本上我得到文档的 self link 然后使用 self link 删除但它给了我异常。

await client.DeleteDocumentAsync(entity.SelfLink, new RequestOptions() { PartitionKey = new PartitionKey(partitionKey) }).ConfigureAwait(false);

entity 是一个新添加的文档,它存在于数据库中(我已经从 Azure 门户中检查过它的存在)

我遇到的异常:

Message: {"Errors":["Resource Not Found"]} ActivityId: 052ad225-4e04-4757-89b8-51f6ccf55f7c, Request URI: https://sy3prdddc05-docdb-1.documents.azure.com:15236/apps/0ee0095b-872d-45bc-8739-67cfbd97db79/services/466a4dd1-27d3-45ca-b013-6875f06a38ab/partitions/73e5c3d8-0332-4c0c-9aec-47a3469ba958/replicas/131354346050636923p//dbs/l29HAA==/colls/l29HAKZFJwA=/docs/l29HAKZFJwAfAAAAAAAAAA==

有什么想法吗??

我终于找到问题了!我为收集指定的分区键的名称是 Pascal 大小写而不是驼峰大小写!显然它是区分大小写的,所以它找不到分区键!

我也遇到过类似的情况。在我的 Repository 中,我使用了一个字符串作为分区键,在文档中我使用了 int 类型。将其更改为对象以保持存储库中立并对其他类型开放。

public virtual async Task DeleteAsync(string databaseId, string collectionId, string id, object partitionKey)
    {
        var reqOptions = new RequestOptions()
        {
            PartitionKey = new PartitionKey(partitionKey)
        };

        await Client.DeleteDocumentAsync(UriFactory.CreateDocumentUri(databaseId, collectionId, id), reqOptions);
    }