Comment sélectionner seulement quelques colonnes dans mon NHibernate requête?
J'ai une classe à une table de mapping; malheureusement, ce tableau a 110+ colonnes, et les requêtes de prendre du temps, surtout quand la plupart du temps je ne veux afficher <10 colonnes.
Mon problème est que les requêtes sont générées dynamiquement en s'appuyant sur ce que l'utilisateur souhaite regarder. Je ne peux pas vraiment créer différentes correspondances avec les différentes colonnes, parce qu'il y aurait un très grand nombre de combinaisons. Je suis en utilisant les critères de l'API pour générer les requêtes. Puis-je également utiliser cette fonction pour sélectionner uniquement les colonnes de l'utilisateur veut? Ou une autre méthode?
Grâce
- Qu'avez-vous à dire 110 colonnes ? de retour à la planche à dessin !
- La refonte de mon précieux de base de données? J'ai passé des années à perfectionner sa structure et personne ne pourra me dire quoi faire avec elle!!!" (c) Votre Client...
Vous devez vous connecter pour publier un commentaire.
Utiliser un
ProjectionList
pour sélectionner les colonnes que vous souhaitez. Voir ici pour les exemples.Facile à faire avec LINQ (en supposant que vous êtes à l'aide de NHibernate 3.0 ou ultérieure):
Aussi, si vous êtes à l'aide de requêtes HQL, il vous suffit de sélectionner les colonnes que vous avez besoin de l'aide de T-SQL, mais l'utilisation d'une
Transformer
pour obtenir un objet fortement typé dos:D'abord créer une classe avec votre rétréci vers le bas des colonnes:
Alors votre requête:
Juste sûr de faire les alias dans votre requête (Nom, Description, etc.) match de la propriété des noms dans votre classe.
En plus de l'exemple de Tim donné que vous pouvez faire quelque chose comme ceci:
Exemple ci-dessus a été prise à partir de: http://nhforge.org/blogs/nhibernate/archive/2009/12/17/queryover-in-nh-3-0.aspx