Ich möchte beispielsweise ein Gridview-Steuerelement in einer ASP.NET-Webseite nur mit den Daten füllen, die für die Anzahl der angezeigten Zeilen erforderlich sind. Wie kann NHibernate dies unterstützen?
.net
nhibernate
orm
pagination
Strahl
quelle
quelle
Sie können auch die Futures-Funktion in NHibernate nutzen, um die Abfrage auszuführen und die Gesamtzahl der Datensätze sowie die tatsächlichen Ergebnisse in einer einzigen Abfrage abzurufen.
Beispiel
Um die Gesamtzahl der Datensätze zu erhalten, gehen Sie wie folgt vor:
Eine gute Diskussion darüber, was Futures Ihnen bieten, finden Sie hier .
quelle
Ab NHibernate 3 können Sie Folgendes verwenden
QueryOver<T>
:Möglicherweise möchten Sie Ihre Ergebnisse auch explizit wie folgt bestellen:
quelle
.Skip(PageNumber * PageSize)
Auf diese Weise werden bei einer Seitengröße von 10 niemals die ersten 10 Zeilen abgerufen. Ich bearbeite, um die Formel korrekt zu machen. Angenommen, konzeptionellPageNumber
sollte nicht 0 sein. Es sollte mindestens 1 sein.Gibt es beim Paging von Daten eine andere Möglichkeit, ein typisiertes Ergebnis von MultiCriteria zu erhalten, oder tun alle das Gleiche wie ich?
Vielen Dank
quelle
Wie wäre es mit Linq to NHibernate, wie in diesem Blog-Beitrag von Ayende beschrieben?
Codebeispiel:
Und hier ist ein ausführlicher Beitrag des NHibernate-Teamblogs zum Datenzugriff mit NHibernate, einschließlich der Implementierung von Paging.
quelle
Höchstwahrscheinlich möchten Sie in einer GridView einen Datenabschnitt plus die Gesamtzahl der Zeilen (Zeilenanzahl) der Gesamtdatenmenge anzeigen, die Ihrer Abfrage entspricht.
Sie sollten eine MultiQuery verwenden, um sowohl die Abfrage Select count (*) als auch die Abfragen .SetFirstResult (n) .SetMaxResult (m) in einem einzigen Aufruf an Ihre Datenbank zu senden.
Beachten Sie, dass das Ergebnis eine Liste ist, die zwei Listen enthält, eine für die Datenscheibe und eine für die Anzahl.
Beispiel:
quelle
Ich schlage vor, dass Sie eine bestimmte Struktur erstellen, um mit Paginierung umzugehen. So etwas wie (ich bin ein Java-Programmierer, aber das sollte leicht zuzuordnen sein):
Ich habe keine Implementierung bereitgestellt , aber Sie können die von @Jon vorgeschlagenen Methoden verwenden . Hier ist eine gute Diskussion, die Sie sich ansehen können.
quelle
Sie müssen nicht zwei Kriterien definieren, sondern können eines definieren und klonen. Zum Klonen von nHibernate-Kriterien können Sie einen einfachen Code verwenden:
quelle