【问题标题】:Select only specific columns in Nhibernate IQueryable仅选择 Nhibernate IQueryable 中的特定列
【发布时间】: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


【解决方案1】:

您真的需要使用 LINQ 吗?如果是这样,请查看基于 Microsoft 代码的 System.Linq.Dynamic NuGet 包。我写了一些可能对您有所帮助的帖子,例如:Dynamic Linq Extension Method。不过,您可以使用 Criteria 或 HQL 做得更好。

【讨论】:

    猜你喜欢
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    • 2012-09-19
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多