2014-09-24 3 views
1

У меня есть объект, который сопоставляется (с использованием Fluent Nhibernate) с представлением в базе данных.
В представлении есть много столбцов, но пользователь может выбрать столбцы, которые он хочет видеть в отчете. Я бы хотел, чтобы в результате запроса базы данных содержались только эти столбцы по соображениям производительности.
Я думаю, что это может быть сделано с помощью QueryOver <> как explianed здесь: How to select only a few columns in my NHibernate query?
Проблема заключается в том, что мне нужно, чтобы получить IQueryable для подкачки и сортировки, поэтому я использую Linq Session.Query <> метод расширения.
Мне либо нужен способ преобразования QueryOver в IQueryable, либо применить проекцию непосредственно к IQueryable. Поскольку столбцы для выбора являются динамическими, я не могу создать новый класс сущностей или новое сопоставление.
ThanksВыберите только определенные столбцы в Nhibernate IQueryable

+0

Не могли бы вы проверить [это] (http://stackoverflow.com/a/25972767/1679310). Основная проекция с реализацией NHiberante IQueryable должна работать из окна –

+0

Проблема в том, что у меня есть список столбцов для отображения в виде строки, и я не знаю, как использовать этот список в IQueryable. Выберите –

+1

. Это лучший для API критериев и прогнозов с использованием строк. С помощью IQueryable вам придется создавать собственные разработчики Expression ... довольно сложно, но не так сложно. Во всяком случае, строковые константы в именах свойств === лучшим является [Criteria API] (http://nhforge.org/doc/nh/en/index.html#querycriteria-projection) –

ответ

0

Вам действительно нужно использовать LINQ? Если это так, проверьте пакет System.Linq.Dynamic NuGet, который основан на коде Microsoft. Я написал несколько сообщений о том, что может вам помочь, см. Например: Dynamic Linq Extension Method. Тем не менее, вы можете сделать лучше с помощью Criteria или HQL.

Смежные вопросы