2011-01-07 8 views
0

In meinem Beispielprojekt, legte ich die Entity-Seitengröße auf 20. Dann habe ich eine Entität mit result count, die auf die Seitengröße teilbar ist. Zum Beispiel die Kategorien, die 100 Elemente haben. Wenn ich auf:WCF Data Service Paging-Verhalten

http://localhost/Sample.svc/Categories?$skiptoken=80 

bekam ich 81. bis 100. Kategorien und die Seite hat die „next“ Link

http://localhost/Sample.svc/Categories?$skiptoken=100 

ich auf diese Seite zu gehen versucht, und es gibt nichts zurück. Was ist die Erklärung dafür?

Antwort

1

Das Paging übernimmt einfach die nächsten PageSize-Elemente. Wenn es weniger als das findet, ist es klar, dass es keine weiteren Elemente mehr gibt, die zurückgegeben werden, so dass Sie nicht den nächsten Link erhalten. Wenn die Abfrage die angeforderte Anzahl von Elementen zurückgibt, versucht die Laufzeit nicht herauszufinden, ob dies die letzte Seite ist oder nicht, sie gibt einfach einen nächsten Link zurück. Es kann vorkommen, dass eine solche Verknüpfung keine Ergebnisse liefert. Tatsächlich ist der nächste Link nicht verpflichtet, irgendwelche Ergebnisse zurückzugeben, aber solange die Antwort einen weiteren nächsten Link enthält, gibt es potentiell mehr Ergebnisse. Der standardmäßig integrierte Seitenwechsel gibt Seiten mit der vordefinierten Größe zurück (mit Ausnahme der letzten), aber die Dienste können beliebige andere Arten von Seitenwechsel verwenden, die für jede Seite (einschließlich leerer Seiten) unterschiedliche Größen zurückgeben können.

Um Ihre Frage direkt zu beantworten "Warum ist die letzte Seite leer?": Die Laufzeit sieht nicht voraus, so dass sie nicht feststellen kann, ob eine bestimmte Seite die letzte ist, außer wenn sie kleiner wird die erwartete Anzahl von Ergebnissen. Ein Blick nach vorn wäre sowohl kostspielig (nach mehr als nötig zu fragen) als auch potenziell falsch (was ist, wenn das zusätzliche Ergebnis einen Fehler verursacht ...).

+0

Danke für die Antwort. – jean27