NHibernate - запрос linq (IQueryable) select, поскольку анонимный тип создает большой список выбора. - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь использовать 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...