QueryOver: выбрать столбцы из подзапроса
Как я могу выбрать / спроецировать значения из подзапроса из другой таблицы в мой основной запрос?
У меня есть NH-модель, подобная этой:
[Serializable]
public class MyModel
{
public virtual int Id {get; set;}
//more mapped values
....
//unmapped values
public virtual string ValueFromOtherTable {get;set;}
}
И я хочу заполнить ValueFromOtherTable левым соединением следующим образом:
Select mt.*, ..., ot.ValueFromOtherTable from MyModelTable mt left
join OtherTable ot ON (somecondition)
где MyModelTable - это таблица, сопоставленная с MyModel-классом. Я хочу заполнить ValueFromOtherTable (без отображения NH), выбрав все значения из mt (чтобы заполнить столбцы с отображением NH), а затем с помощью OtherTable хочу заполнить ValueFromOtherTable.
Я не могу объединить обе таблицы черезQueryOver
поскольку в модели не существует прямой корреляции родитель-ребенок,JoinAlias
или жеJoinQueryOver
не будет работать. мойMainQueryOver
запросыMyModelTable
.
АЛЬТЕРНАТИВА:
Альтернатива состоит в том, чтобы сначала получить все значения из MyModelTable, а затем использовать там свойства для запроса OtherTable. Однако это приведет кSELECT N+1
проблема (для каждой модели изMyModel
выберите некоторые OtherTable ...), а также делает код очень сложным.
Есть хороший способ решить эту проблему или это единственный способ заполнить MyModel, используя описанную альтернативу?