【问题标题】:"Resource Not Found" error on deleting document from documentdb从 documentdb 删除文档时出现“找不到资源”错误
【发布时间】:2017-04-07 07:35:58
【问题描述】:

我在删除文档表单文档 db 时遇到问题。代码非常简单,我没有做任何花哨的事情。基本上我得到了文档的自我链接,然后使用自我链接删除,但它给了我例外。

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

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

我得到的异常:

消息:{“错误”:[“找不到资源”]} ActivityId:052ad225-4e04-4757-89b8-51f6ccf55f7c,请求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==

有什么想法吗??

【问题讨论】:

  • 您能否确保partitionKey 值与您要删除的文档中的值匹配?
  • 目前我的数据库中只有一个分区键。我不知道问题是什么,在网上找不到任何帮助。
  • 谁对这个问题投了反对票,请您至少提供一些反馈!

标签: c# azure azure-cosmosdb


【解决方案1】:

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

【讨论】:

  • 请帮助将其标记为答案,以帮助更多有相同问题的社区。​​span>
【解决方案2】:

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

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);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多