|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 3 ![]() |
Bonjour,
Je suis en train d'effectuer une migration d'un projet sous NHibernate 1.2 vers la version 3.2 et j'ai un problème au niveau du chargement d'une collection. En gros j'ai une classe "Carton" et une classe "Boite", un carton peut contenir plusieur boites. Dans ma classe Carton j'ai une propriété "Inventaire" en virtual qui permet d'accéder à ces cartons. Au lancement de mon appli tout va bien, ma requête va bien récupérer mon carton, mais la propriété reste vide. Il me semble que lazy loading par défaut est activé, j'ai essayé de mettre ce lazy à false un peu partout mais rien n'y fait, je vois bien que le chargement met plus de temps mais rien n'est récupéré. J'ai bien évidemment fait le mapping puisque cela fonctionnnait très bien en version 1.2. Voici mon app.config : Code :
Code :
Ou comment dans ma requête puis je faire un "Load" comme en Linq ? Des idées ? Merci d'avance. |
||||
|
|
00
|
|
|
#2 | ||||||
|
Membre habitué
![]() Alexandre TriguerosArchitecte C# Inscription : février 2003 Messages : 74 ![]() |
Bonjour,
par un "Load", tu veux dire une commande comme : Code :
Attention : Get te renverra null si il ne trouve pas l'id et Load te renverra un proxy qui lancera une exception si l'objet n'existe pas quand tu voudra y accéder. Pour forcer le fetching de la collection, tu peux la désactiver dans le mapping (lazy="false") forcer à faire un jointure ("fetch=join") d'autres méthodes existent également pour le hql, le requetage par criteria & QueryOver Pour le hql : Code :
from Carton c where c.Id = :id left join fetch c.Inventaire Code :
Code :
Sinon, faire une requete, la plus simple possible et spécifier le résultat. Attention, avec les requêtes à jointure, tu peux te retrouver avec des résultats en double. La raison de la ligne du "Transformers.DistinctRootEntity" c'est pour filtrer par entité racine. il te faudra aussi la spécifier sur l'objet IQuery si tu utilises le hql. J'ai un peu de mal également à comprendre pourquoi tu met le hql directement dans le code ? perso, je préfère le sortir dans le mapping de manière a n'avoir qu'une grosse partie qui concerne la base de données. Bref, dans tous les cas, tu as de quoi avancer ! Bonne après midi. |
||||||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com