Как я могу выбрать/вывести значения из подзапроса из другой таблицы в мой основной запрос?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-mapping), выбирая все значения из mt (чтобы заполнить NH-сопоставленные столбцы), а затем используя OtherTable Я хочу заполнить ValueFromOtherTable.
Я не могу присоединиться к обеим таблицам через QueryOver
, поскольку в модели нет прямой корреляции родитель-ребенок, поэтому JoinAlias
или JoinQueryOver
не будет работать. Мои MainQueryOver
запросов MyModelTable
.
АЛЬТЕРНАТИВА:
Альтернативой является первым получить все значения из MyModelTable, а затем, используя свойства есть для запроса OtherTable. Однако это приведет к ошибке SELECT N+1
(для каждой модели от MyModel
выберите другую таблицу OtherTable ...), а также сделает код очень сложным.
Есть ли способ решить эту проблему или это единственный способ заполнить MyModel, используя описанную альтернативу ?
Спасибо, это уже приносит мне гораздо ближе к решению. С помощью этого подхода существует способ сделать SELECT * для столбцов из MyModel/основного запроса при выборе только нескольких свойств из OtherModel или мне нужно указать каждый столбец/свойство expliciteley? – Philipp
Нет, либо проекция, либо нет. Нет возможности использовать *, без частичного решения. Извините ... –
ах ладно, я думаю, впереди много работы :) – Philipp