2010-07-22 21 views
1

J'ai modélisé toutes mes tables et j'ai déjà porté la plupart de mes requêtes en utilisant des critères détachés. Tout fonctionne très bien mais je suis à un point où je ne sais pas comment avancer. J'ai une sous-requête qui utilise la clause "connect by" d'Oracle. Comment les développeurs surmontent-ils généralement cette limitation de Castle/NHibernate? J'utilise la dernière version de NHibernate.Quelle est la meilleure façon d'utiliser des fonctions SQL non prises en charge ou des clauses avec Castle/NHibernate?

Répondre

1

Si vous vraiment besoin d'utiliser connect by, vous pouvez toujours utiliser une requête SQL (et il y a un tout chapter à ce sujet). Toutefois, étant donné que NHibernate utilise le modèle Identity Map, il est généralement plus productif de charger simplement les objets et de laisser les relations être établies en mémoire.

+0

Avez-vous un exemple de chargement de relations parent/enfant avec l'utilisation du modèle de mappage d'identité? Je ne suis pas sûr si vous vouliez dire faire une boucle dans chaque rangée pour trouver les enfants. – Mike

+0

Il suffit de charger l'ensemble, et les parents seront liés (en supposant que vous avez défini des relations plusieurs-à-un) –

+0

Sinon, vous pouvez charger les éléments * et * la collection enfant, ce qui est moins efficace sur la BD mais vous obtenir un arbre prêt à l'emploi. –