【发布时间】:2014-09-26 04:23:34
【问题描述】:
我有一个实体(使用 Fluent Nhibernate)映射到数据库中的视图。
视图有很多列,但用户可以选择他想在报告中看到的列。出于性能原因,我希望生成的数据库查询仅包含这些列。
我认为这可以使用 QueryOver 来完成,如下所述:How to select only a few columns in my NHibernate query?
问题是我需要获取一个 Iqueryable 用于分页和排序,所以我使用的是 Linq Session.Query 扩展方法。
我要么需要一种将 QueryOver 转换为 IQueryable 的方法,要么需要将投影直接应用于 IQueryable。由于要选择的列是动态的,我无法创建新的实体类或新的映射。
谢谢
【问题讨论】:
-
你能检查一下this。 NHiberante IQueryable 实现的基本投影应该是开箱即用的
-
问题是我有要显示为字符串列表的列列表,但我不知道如何在 IQueryable Select 中使用该列表
-
这是 Criteria API 和使用字符串的投影的最佳选择。使用 IQueryable,您将不得不创建自己的表达式构建器......非常具有挑战性,但并不难。无论如何,属性名称的字符串常量 === 最好是 Criteria API
标签: c# nhibernate linq-to-nhibernate