Question

Je développe une application Web utilisant NHibernate.Pouvez-vous me dire comment écrire une requête NHibernate pour la requête SQL suivante :

SELECT v1.Id
FROM VIEW v1
LEFT JOIN VIEW v2 ON v1.SourceView = v2.Id
ORDER BY v1.Position

Il s'agit essentiellement d'une jointure automatique mais je ne sais pas comment écrire cela dans Nhibernate.Disons que les noms de propriétés sont les mêmes que les noms de colonnes de la table.

Était-ce utile?

La solution

Vous pouvez simplement effectuer la sélection sur l'entité d'origine et faire l'association entre les deux objets "lazy = false".Tant que les entités sont mappées, les deux seront renvoyées et vous n'obtiendrez pas d'exception de chargement différé lorsque vous tenterez d'accéder à l'objet.

Si vous ne souhaitez pas mapper "lazy=false", vous pouvez également parcourir les résultats et effectuer une sorte d'opération (comme demander s'il est nul ;if(v1.AssocatedObject == null){}) pour garantir que les données sont chargées pendant que la session est ouverte.

Mise à jour:

Je pense qu'il y en a en fait un meilleur que celui-là, NHibernateUtil.Initialise() qui peut initialiser une collection sans avoir à la parcourir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top