2016-07-25 5 views
1

Ist es möglich, mithilfe der DocumentDB .NET SDK eine asynchrone Abfrage für die DB auszuführen, die alle übereinstimmenden Dokumente zurückgibt?Ist es möglich, DocumentDB für alle Dokumente asynchron abzufragen (d. H. Kein Paging)?

Die Antwort Antwort auf diese Frage Stackoverflow: Querying Azure DocumentDB with ExecuteNextAsync returns fewer than MaxItemCount zeigt an, dass:

Es gibt Grenzen, wie lange eine Abfrage auf DocumentDB ausgeführt wird.
...
Wenn diese Grenzwerte erreicht werden, kann ein Teil der Ergebnisse zurückgegeben werden.

Ich weiß, dass es möglich ist, die oben genannte Grenze zu überwinden, indem sie über ausgelagerte Ergebnisse iteriert wie folgt: (source)

List<Family> families = new List<Family>(); 

FeedOptions options = new FeedOptions { MaxItemCount = 1 }; 

var query = client.CreateDocumentQuery<Family>(collectionLink, options).AsDocumentQuery(); 

while (query.HasMoreResults) 
{ 
    foreach (Family family in await query.ExecuteNextAsync()) 
    { 
     families.Add(family); 
    } 
} 

Meine Frage ist - Ist diese Schleife notwendig? Könnte es eine elegantere Möglichkeit geben, dem SDK mitzuteilen, dass alle verfügbaren Ergebnisse zurückgegeben werden sollen (ohne Paging)?

+0

ich es nie benutzen, weil ich mein eigenes Paging mit einem faulen Schnittstelle verwalten, aber ich dachte, die toArray() Methode tat, was für fragen. –

+0

Können Sie das mit 'CreateStoredProcedureQueryy' versuchen? Wie 'client.CreateStoredProcedureQuery (collectionLink," Select * from myColleciton ");'. – vikscool

Antwort

2

Die Schleife, die Sie haben, ist die beste Möglichkeit zum Aufzählen über mehrere Anforderungen hinweg, da bei jeder Anforderung in DocumentDB eine zeitlich begrenzte Ausführung erfolgt.

Sie könnten diesen Code in eine Erweiterungsmethode umwandeln, um es handlich zu machen.

Dies ist ein guter Vorschlag für DocumentDB Team diese Unterstützung hinzuzufügen - https://github.com/Azure/azure-documentdb-dotnet/issues

Verwandte Themen