Frage

Ich entwickle eine Webanwendung mit NHibernate.Können Sie mir sagen, wie man eine NHibernate-Abfrage für die folgende SQL-Abfrage schreibt:

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

Im Grunde ist es ein automatischer Beitritt, aber ich weiß nicht, wie ich das in Nhibernate schreiben soll.Nehmen wir an, die Eigenschaftsnamen stimmen mit den Namen der Tabellenspalten überein.

War es hilfreich?

Lösung

Sie könnten einfach die Auswahl für die ursprüngliche Entität durchführen und die Zuordnung zwischen den beiden Objekten „lazy = false“ herstellen.Solange die Entitäten zugeordnet sind, werden beide zurückgegeben und Sie erhalten keine LazyloadingException, wenn Sie versuchen, auf das Objekt zuzugreifen.

Wenn Sie „lazy=false“ nicht zuordnen möchten, können Sie auch die Ergebnisse durchlaufen und eine Operation ausführen (z. B. fragen, ob es null ist;if(v1.AssocatedObject == null){}), um sicherzustellen, dass die Daten geladen werden, während die Sitzung geöffnet ist.

Aktualisieren:

Ich denke, dass es mit NHibernateUtil.Initialise() tatsächlich eine bessere Lösung gibt, die eine Sammlung initialisieren kann, ohne sie durchgehen zu müssen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top