2017-07-07 7 views
0

Ich habe eine C# -Anwendung implementiert, in der ich eine Auflistung durchführe und einigen Dokumenten eine Eigenschaft hinzufüge. Um die Eigenschaft hinzuzufügen, verwende ich die ReplaceDocumentAsync-Methode, aber für einige Dokumente erhalte ich die Ausnahme "Resource Not Found" mit dem Ausnahmetyp DocumentClientException. Warum ist das so, da ich das Dokument in der vorhergehenden Abfrage gefunden habe?Ausnahme "Ressource nicht gefunden" beim Ersetzen von Dokument

IQueryable<AISObject> aisQuery = this.client.CreateDocumentQuery<AISObject>(
    UriFactory.CreateDocumentCollectionUri(DatabaseId, AISCollectionId), 
    new SqlQuerySpec() 
    { 
     QueryText = "SELECT * FROM " + AISCollectionId + " a WHERE ST_WITHIN(a.Location, { 'type':'Polygon', 'coordinates': " + coordinates + " })", 
    }, new FeedOptions { MaxItemCount = -1, EnableCrossPartitionQuery = true, MaxDegreeOfParallelism = -1, MaxBufferedItemCount = -1 }); 
foreach (AISObject aisObject in aisQuery.ToList()) 
{ 
    aisObject.MapID = mapID; 
    await this.client.ReplaceDocumentAsync(UriFactory.CreateDocumentUri(DatabaseId, AISCollectionId, aisObject.id), aisObject, 
     new RequestOptions { PartitionKey = new PartitionKey(aisObject.TransmitterMMSI) }); 
} 

Es ist eine partitionierte Sammlung mit Lazy IndexingMode.

Antwort

0

Sind Sie sich über den PartitionKey sicher?

Sie haben die Dokumente mit einer Cross-Partition-Abfrage gefunden, vielleicht ist der PartitionKey nicht der richtige.

Erhalten Sie ständig ResourceNotFound? Wenn ja, könnte dies der Fall sein.

+0

Meinst du, dass ich möglicherweise den falschen Partitionsschlüssel im ReplaceDocumentAsync-Aufruf verwenden? Nein, TransmitterMMSI ist der Partitionsschlüssel der Sammlung. –

Verwandte Themen