Wenn SetFirstResult(start)
und SetMaxResults(count)
Methoden Paging zu implementieren ich bemerkt habe, dass die erzeugte Abfrage nur ein select top count * from some_table
tut und es nimmt nicht die start
Parameter berücksichtigt oder zumindest nicht auf Datenbankebene. Es scheint, dass, wenn ich anweisen NHibernate die folgende Abfrage ausführen:NHibernate Paging mit SQL Server
var users = session.CreateCriteria<User>()
.SetFirstResult(100)
.SetMaxResults(5)
.List<User>();
105 Datensätze Transit zwischen dem Datenbankserver und die Anwendung, die darauf achten, werden die ersten 100 Datensätze strippen. Bei Tabellen mit vielen Zeilen könnte dies ein Problem sein.
Ich habe überprüft, dass mit einer SQLite Datenbank NHibernate die OFFSET
und LIMIT
Schlüsselwörter nutzt, um Ergebnisse auf Datenbankebene zu filtern. Mir ist bewusst, dass es in SQL Server 2000 kein Äquivalent für das Schlüsselwort OFFSET
und Oracles ROWNUM
gibt, aber gibt es eine Problemumgehung? Wie wäre es mit SQL Server 2005/2008?
Große Antwort @Justice. Vielen Dank für Ihre Zeit. –