Par exemple, je souhaite remplir un contrôle gridview dans une page Web ASP.NET avec uniquement les données nécessaires pour le nombre de lignes affichées. Comment NHibernate peut-il soutenir cela?
.net
nhibernate
orm
pagination
Rayon
la source
la source
Vous pouvez également profiter de la fonctionnalité Futures de NHibernate pour exécuter la requête afin d'obtenir le nombre total d'enregistrements ainsi que les résultats réels dans une seule requête.
Exemple
Pour obtenir le nombre total d'enregistrements, procédez comme suit:
Une bonne discussion de ce que les Futures vous offrent est ici .
la source
À partir de NHibernate 3 et supérieur, vous pouvez utiliser
QueryOver<T>
:Vous pouvez également ordonner explicitement vos résultats comme ceci:
la source
.Skip(PageNumber * PageSize)
de cette façon, si la taille de la page est de 10, il ne récupérera jamais les 10 premières lignes. Je modifie pour que la formule soit correcte. En supposant que conceptuellement, celaPageNumber
ne devrait pas être égal à 0. Il devrait être au minimum 1.Lors de la pagination des données, existe-t-il un autre moyen d'obtenir le résultat tapé de MultiCriteria ou tout le monde fait la même chose comme moi?
Merci
la source
Pourquoi ne pas utiliser Linq pour NHibernate comme indiqué dans ce billet de blog d'Ayende?
Exemple de code:
Et voici un article détaillé du blog de l'équipe NHibernate sur l' accès aux données avec NHibernate, y compris la mise en œuvre de la pagination.
la source
Très probablement, dans un GridView, vous souhaiterez afficher une tranche de données plus le nombre total de lignes (rowcount) de la quantité totale de données correspondant à votre requête.
Vous devez utiliser une MultiQuery pour envoyer à la fois la requête Select count (*) et .SetFirstResult (n) .SetMaxResult (m) à votre base de données en un seul appel.
Notez que le résultat sera une liste contenant 2 listes, une pour la tranche de données et une pour le décompte.
Exemple:
la source
Je vous suggère de créer une structure spécifique pour gérer la pagination. Quelque chose comme (je suis un programmeur Java, mais cela devrait être facile à mapper):
Je n'ai pas fourni d'implémentation, mais vous pouvez utiliser les méthodes suggérées par @Jon . Voici une bonne discussion à examiner.
la source
Vous n'avez pas besoin de définir 2 critères, vous pouvez en définir un et le cloner. Pour cloner les critères de nHibernate, vous pouvez utiliser un code simple:
la source