Я пытаюсь заказать запрос Linq to NHibernate на сумму его детей.Linq-to-NHibernate OrderBy Not Working
session.Linq<Parent>().OrderBy(p => p.Children.Sum(c => c.SomeNumber)).ToList()
Это не работает. При взгляде на NHProf я вижу, что он заказывает Parent.Id. Я понял, что, возможно, он возвращал результаты и заказывал их вне SQL, но если я добавлю .Skip (1). Получите (1) запрос Linq, он все равно заказывает Parent.Id.
Я попытался сделать это с помощью списка в памяти, и он работает только отлично.
Я делаю что-то не так, или это проблема с Linq до NHibernate?
Я уверен, что всегда могу вернуть список, а затем выполнить операции на , но это не идеальное обходное решение, потому что я не хочу, чтобы возвращал все записи.
Причина, по которой я не хочу использовать HQL, рефакторинга. Повторный факторинг не будет захватывать строки HQL. По той же причине я использую FluentNHibernate вместо файлов .hbm. Мне нужно вернуть весь объект, хотя я просто хочу, чтобы он был заказан агрегатом. Я могу сделать это очень хорошо в SQL, поэтому HQL, вероятно, поддерживает его, если мне действительно нужно пройти этот маршрут. Я не уверен в производительности Linq2NH. Сейчас это кажется достаточно быстрым. Возможно, версия 1.0 имеет некоторые улучшения. Он должен пройти большинство тестов запросов NHibernate (поэтому я прочитал, даже не знаю, что они собой представляют). –
http://hiberlog.wordpress.com/2009/02/16/lambda-expressions-extension-methods-and-nhibernate/ Вот страница, которую я сегодня опубликовал ранее, об использовании методов расширения для строгого запроса запросов Criteria. Я еще не читал его, но вы можете найти его интересным, так как вас беспокоит наличие строго типизированных запросов. Извините, я не мог больше помочь! – reach4thelasers
Я раньше использовал NHLambdaExtensions. http://code.google.com/p/nhlambdaextensions/ Это работало очень хорошо, но мне очень не нравятся критерии. Я бы предпочел использовать HQL и проверять модульные тесты на наличие ошибок. –