Azure documentDB - id冲突不会抛出异常

时间:2015-11-15 04:14:23

标签: azure-cosmosdb

我正在编写一个简单的API,将json文档发布到DocumentDB中的单个集合。奇怪的是,当我尝试多次添加具有相同id的文档时,我没有异常或错误指示。

    public static async Task<ResourceResponse<Document>> CreateDocument(Database database, DocumentCollection collection, object obj)
    {
        try
        {
            Uri collUri = UriFactory.CreateDocumentCollectionUri(database.Id, collection.Id);
            return await client.CreateDocumentAsync(collUri, obj, null, true);
        }
        catch (DocumentClientException e)
        {
            // nothing is ever caught...
        }
    }

我看到的行为是第一份文件保存。我可以在文档资源管理器中看到它。然后,如果我更改数据并保持相同的ID,代码似乎工作,但更新的文档实际上没有保存,但我没有得到预期的异常。我觉得这里应该有例外我错了吗?

1 个答案:

答案 0 :(得分:1)

如果发生冲突,DocumentDB会向Microsoft.Azure.Documents.DocumentClientException发送消息:{"Errors":["Resource with specified id or name already exists"]}

您没有看到异常的原因(很可能)是您所拥有的代码是异步运行的。换句话说,您的代码可能在返回创建操作的结果之前结束执行。您只需调用.Result即可解决异步方法。