Не удалось выполнить GroupBy с помощью NHibernate LINQ

У меня есть трудные времена, чтобы выполнить простую группировку на моих объектах. Неисправная строка кода

var xxx = jobQuery.GroupBy(j => j.EverifyCase)
    .Select(g => new { EC = g.Key, MRJ = g.Last() })
    .ToList();

Это дает мне следующее HibernateException:

Не удалось определить источник запроса: ItemName = ‹ сгенерировано >_1, ItemType = EverifyCaseJob, Expression = from EverifyCaseJob _1 в [ec]

Если я выполню jobQuery.ToList(), все будет замечательно, поэтому я предполагаю, что проблема связана с GroupBy(). «Источник запроса» может быть идентифицирован, поскольку я использую этот объект повсеместно, но пока не в сочетании с GroupBy() .

Любые идеи?

Кроме того, может ли кто-нибудь объяснить, что означает сообщение об ошибке?

Версия NHibernate — 4.0.3.4000.

Я также использую Fluent NH - версия 2.0.1.0


person Bozhidar Stoyneff    schedule 30.12.2015    source источник
comment
какой тип EverifyCase?   -  person Konstantin Zadiran    schedule 31.12.2015
comment
EverifyCase — это еще один известный, правильно сопоставленный объект, используемый повсеместно. На самом деле это мастер в отношениях мастер-потомок с EverifyCaseJob. Множественность этого отношения один ко многим.   -  person Bozhidar Stoyneff    schedule 31.12.2015
comment
Исключение широкое, но оно просто означает, что этот тип запроса не поддерживается. Проблема здесь с .Last()   -  person hazzik    schedule 03.01.2016
comment
@hazzik Да, я как бы почувствовал это, потому что функция Max() работает как шарм, но ожидает скаляр. В любом случае, спасибо за подтверждение этого чувства :)   -  person Bozhidar Stoyneff    schedule 03.01.2016


Ответы (1)


Sql устанавливается на основе и не имеет порядка в группирующей группе. Таким образом, он не имеет значения «последний» в группе, поэтому NHibernate не может перевести его в sql. Макс с другой стороны хорошо определен для набора и будет работать нормально.

person Firo    schedule 22.01.2016