Recentemente mi sono reso conto che DocumentDB supporta operazioni di aggiornamento indipendenti tramite ReplaceDocumentAsync.DocumentDB Sostituisci non funzionante
Ho sostituito l'operazione Upsert di seguito con l'operazione Sostituisci.
var result = _client
.UpsertDocumentAsync(_collectionUri, docObject)
.Result;
Quindi questo è ora:
var result = _client
.ReplaceDocumentAsnyc(_collectionUri, docObject)
.Result;
Tuttavia, ora ottengo l'eccezione:
Microsoft.Azure.Documents.BadRequestException: ResourceType documento è inaspettato. ActivityId: b1b2fd71-3029-4d0d-bd5d-87d8d0a2fc95
Nessuna idea perché, upsert e sostituire sono della stessa vena e l'oggetto è lo stesso che ha lavorato per upsert, quindi mi aspetto di lavorare senza problemi .
Tutti apprezzati.
Grazie
Aggiornamento: hanno cercato di implementare questo utilizzando l'approccio SelfLink, e funziona per Sostituire, ma selflink non funziona con upsert. Il comportamento è abbastanza confuso. Non mi piace il fatto che devo creare un self link nel codice usando la concatenazione di stringhe.
Quello che mi prende è la discrepanza di comportamento tra Create/Replace/upsert/e Delete. I metodi con lo stesso footprint e i relativi nomi si comportano in modo completamente diverso. Molto deluso da questo. –
Ci si abitua abbastanza velocemente. :-) –
Direi che questo è in realtà intuitivo.In una creazione, non si dispone ancora di un record nel database e, pertanto, un 'ID' non è richiesto per specificare informazioni adeguate per eseguire l'operazione. Ma un aggiornamento richiede un riferimento al record che stai cercando di aggiornare/sostituire. Pertanto, non si vuole costruire una raccolta uri, ma un documento uri invece in questo caso. –