2015-11-15 2 views
0

Я пишу простой API, который отправляет json-документ в одну коллекцию в DocumentDB. Странно, что я не получаю никаких исключений или признаков ошибки при попытке добавить документ с одним и тем же идентификатором более одного раза.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... 
     } 
    } 

Поведение, которое я вижу, это то, что первый документ сохраняется. Я вижу это в проводнике документов. Затем, если я изменяю данные и сохраняю один и тот же идентификатор, код работает, но обновленный документ фактически не сохраняется, однако я не получаю исключение, как ожидалось. Неправду ли я думать, что здесь должно быть исключение?

ответ

0

В случае возникновения конфликта DocumentDB выбрасывает Microsoft.Azure.Documents.DocumentClientException с сообщением: {"Errors":["Resource with specified id or name already exists"]}.

Причина, по которой вы не видите исключения, заключается в том, что код, который вы выполняете асинхронно. Другими словами, ваш код может завершиться исполнением до того, как вернется результат операции create. Вы можете решить метод async, просто позвонив .Result.

+0

Спасибо, что решили проблему – mcwrath

Смежные вопросы