2014-09-24 58 views
1

我有一個映射(使用Fluent Nhibernate)到數據庫中的視圖的實體。
視圖有很多列,但用戶可以選擇他想要在報表中看到的列。出於性能原因,我希望生成的數據庫查詢僅包含這些列。
我認爲這是可以使用QueryOver <>來完成,這裏explianed:How to select only a few columns in my NHibernate query?
的問題是,我需要獲得一個IQueryable的分頁和排序,所以我用LINQ Session.Query <>擴展方法。
我需要一種方法將QueryOver轉換爲IQueryable或將投影直接應用於IQueryable。由於要選擇的列是動態的,因此我無法創建新的實體類或新的映射。
謝謝僅選擇Nhibernate中的特定列IQueryable

+0

你可以檢查[this](http://stackoverflow.com/a/25972767/1679310)。與NHiberante IQueryable實現的基本投影應該開箱即用 – 2014-09-24 14:02:14

+0

問題是,我有列顯示爲一個字符串列表,我不知道如何在IQueryable選擇使用該列表 – 2014-09-24 14:40:15

+1

這是Criteria API和使用字符串的投影的最佳選擇。有了IQueryable,你將不得不創建自己的表達式構建器......非常具有挑戰性,但並不難。無論如何,字符串常量屬性名稱===最好的是[標準API](http://nhforge.org/doc/nh/en/index.html#querycriteria-projection) – 2014-09-24 14:42:02

回答

0

你真的需要使用LINQ嗎?如果是這樣,請查看基於Microsoft代碼的System.Linq.Dynamic NuGet包。我寫了一些可以幫助你的帖子,例如:Dynamic Linq Extension Method。不過,您可以使用Criteria或HQL做得更好。