QueryOver: Spalten aus der Unterabfrage auswählen

Wie kann ich Werte aus einer Unterabfrage aus einer anderen Tabelle in meine Hauptabfrage auswählen / projizieren?

Ich habe ein NH-Modell wie dieses:

[Serializable]
public class MyModel
{
    public virtual int Id {get; set;}
    //more mapped values
    ....
    //unmapped values
    public virtual string ValueFromOtherTable {get;set;}
}

Und ich möchte ValueFromOtherTable mit einer linken Verknüpfung wie dieser füllen:

Select mt.*, ..., ot.ValueFromOtherTable from MyModelTable mt left 
join OtherTable ot ON (somecondition)

where MyModelTable ist die Tabelle, die der MyModel-Klasse zugeordnet ist. Ich möchte ValueFromOtherTable füllen (keine NH-Zuordnung), indem ich alle Werte aus mt auswähle (um die NH-zugeordneten Spalten zu füllen) und dann mit OtherTable ValueFromOtherTable füllen möchte.

Ich kann nicht beide Tabellen über @ verbindQueryOver da es im Modell keine direkte Eltern-Kind-Korrelation gibt,JoinAlias oderJoinQueryOver wird nicht funktionieren. MeinMainQueryOver AbfragenMyModelTable.

ALTERNATIVE

Die Alternative besteht darin, zuerst alle Werte aus MyModelTable abzurufen und dann mithilfe der dortigen Eigenschaften OtherTable abzufragen. Dies führt jedoch zu einemSELECT N+1 Problem (für jedes Modell vonMyModel wähle eine andere Tabelle aus ...) und mache den Code auch sehr kompliziert.

Gibt es eine gute Möglichkeit, dieses Problem zu lösen, oder ist es die einzige Möglichkeit, MyModel mithilfe der beschriebenen Alternative zu füllen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage