Я пытаюсь использовать NHibernate Session.Query из NHibernate.Linq с проекцией на анонимный тип, но когда я проверяю свойство нулевых ссылок, NHibernate добавляет для выбора списка каждый столбец из главной таблицы и каждое соединение.
Linq-запрос:
_session.Query<Allocation>()
.Select(x => new
{
Id = x.Id,
OwnerId = x.Owner != null ? x.Owner.Id : 0
})
.FirstOrDefault();
NHibernate SQL-результат:
SELECT allocation0_.id AS col_0_0_,
contractor1_.id AS col_1_0_,
allocation0_.owner_id AS col_2_0_,
contractor1_.id AS Id1_2_,
contractor1_.symbol AS symbol2_2_,
contractor1_."name" AS name3_2_,
contractor1_.is_active AS is4_2_
FROM allocation allocation0_
LEFT OUTER JOIN contractor contractor1_
ON allocation0_.owner_id = contractor1_.id
LIMIT 1
Я знаю, что это достижимо с помощью QueryOver и списка проекций, но мне интересно, почему этот способ сгенерирован неправильноРезультат SQL