Ich habe vor kurzem festgestellt, dass DocumentDB Standalone-Update-Operationen über ReplaceDocumentAsync unterstützt.DocumentDB Ersetzen funktioniert nicht
Ich habe den Upsert-Vorgang unten durch den Vorgang Ersetzen ersetzt.
var result = _client
.UpsertDocumentAsync(_collectionUri, docObject)
.Result;
Das ist also jetzt:
var result = _client
.ReplaceDocumentAsnyc(_collectionUri, docObject)
.Result;
Aber jetzt bekomme ich die Ausnahme:
Microsoft.Azure.Documents.BadRequestException: Resource Dokument ist unerwartet. ActivityId: b1b2fd71-3029-4d0d-bd5d-87d8d0a2fc95
Keine Ahnung, warum, Upsert und ersetzen sind von der gleichen Ader und das Objekt ist das gleiche, die für Upsert gearbeitet, so würde ich erwarten, dass es ohne Probleme arbeitet .
Alle Hilfe wird geschätzt.
Dank
Update: Haben Sie versucht dies mit dem SelfLink Ansatz zu implementieren, und es funktioniert für ersetzen, aber selflink mit Upsert funktioniert nicht. Das Verhalten ist ziemlich verwirrend. Ich mag es nicht, dass ich eine Self-Link in Code mit String-Verkettung erstellen muss.
Was mich bekommt, ist die Diskrepanz im Verhalten zwischen Erstellen/Ersetzen/Upsert/und Löschen. Methoden mit demselben Footprint und ähnlichen Namen verhalten sich völlig anders. Sehr enttäuscht von diesem. –
Sie gewöhnen sich ziemlich schnell daran. :-) –
Ich würde sagen, dass das eigentlich intuitiv ist.In einem create haben Sie noch keinen Datensatz in der db, und daher ist eine 'Id' nicht erforderlich, um angemessene Informationen anzugeben, um die Operation auszuführen. Ein Update benötigt jedoch einen Verweis auf den Datensatz, den Sie zu aktualisieren/ersetzen versuchen. Daher möchten Sie in diesem Fall kein Sammel-URI, sondern ein Dokument-URI erstellen. –