Почему Fetch должен быть последним предложением в запросе Linq Nhibernate


person kaptan    schedule 28.12.2010    source источник


Ответы (1)


Я столкнулся с той же проблемой, прежде чем понял, что происходит. http://groups.google.com/group/nhibernate-development/browse_thread/thread/b44957841c9416ba

Наиболее вероятная причина в том, что этот способ было проще реализовать, потому что нет необходимости учитывать возможные преобразования (выбрать/группировать по), которые могут произойти в запросе.

NHibernate всегда был сложным с точки зрения создания запросов на подкачку, когда у ваших сущностей есть связанные коллекции. Если вы используете Criteria или QueryOver, правильный способ сделать это — сделать так, чтобы запрос на подкачку возвращал только идентификаторы сущностей с проекцией Distinct. Эти идентификаторы будут использоваться в условии where подзапроса, который будет содержать все соединения.

Вы можете увидеть пример здесь (ответ):

Критерии пейджинга NHibernate с активным fetchmode. (с использованием беглого NH)

Я еще не пробовал эту технику в Nhibernate LINQ, но она может сработать.

person Dmitry S.    schedule 28.12.2010