2015-11-15 68 views
0

我正在寫一個簡單的API,將json文檔發佈到DocumentDB中的單個集合。奇怪的是,當我嘗試多次添加具有相同ID的文檔時,我沒有發現任何異常或錯誤跡象。Azure 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,代碼似乎工作,但更新的文檔實際上並未保存,但我沒有得到意外的異常。我錯在這裏認爲應該有一個例外嗎?

回答

0

如果發生衝突,DocumentDB會拋出Microsoft.Azure.Documents.DocumentClientException,並顯示消息:{"Errors":["Resource with specified id or name already exists"]}

您沒有看到異常的原因(很有可能)是您擁有的代碼異步運行。換句話說,在創建操作的結果返回之前,您的代碼可能會結束執行。只需調用.Result即可解決異步方法。

+0

謝謝,解決了這個問題 – mcwrath