Как клонировать документ DocumentDB? - PullRequest
1 голос
/ 10 января 2020

Я пытаюсь создать утилиту в C#, которая обновляет значение поля id в документе Cosmos DB.

Для этого мой план атаки:

  • Считать существующий документ из базы данных как обобщенный c Microsoft.Azure.Documents.Document
  • Клонировать существующий документ в новый документ
  • Обновление id в новом документе по моему вкусу
  • Создание нового документа в базе данных
  • Удаление старого документа

У меня проблема в том, что я не знаю, как клонировать Microsoft.Azure.Documents.Document. Мой существующий код явно просто создает копию:

var existingDocument = new Document(); // Pretend this is coming from database and is an actual document.
var newDocument = existingDocument; // Need to clone object... how?
newDocument.Id = $"{docType}_{docId}";
newDocument.SetPropertyValue("_rid", null);
newDocument.SetPropertyValue("_self", null);
newDocument.SetPropertyValue("_etag", null);
newDocument.SetPropertyValue("_attachments", null);
newDocument.SetPropertyValue("_ts", null);

Как я могу создать клон Microsoft.Azure.Documents.Document, чтобы newDocument не было просто ссылкой на existingDocument?

1 Ответ

1 голос
/ 10 января 2020

Мой "план атаки" был неверным ... мне не нужно пытаться клонировать объект Document, чтобы обновить поле id. Я могу просто использовать метод ReplaceDocumentAsync() на DocumentClient. Дух.

await _docClient.ReplaceDocumentAsync(existingDocument, options);
...