【问题标题】:nHibernate criteria ResultTransformer not workingnHibernate 标准 ResultTransformer 不起作用
【发布时间】:2018-03-05 13:06:45
【问题描述】:

我有(冗长而复杂的)查询,基于 Criteria。

以下代码:

//....
var myList = criteria.List<MyEntity>()

工作正常,但它返回 50 个完整实体的列表。出于性能原因,我想为我的查询应用投影。以下代码也可以正常工作:

  criteria.SetProjection(
    Projections.ProjectionList()
       .Add(Projections.Property("Id"))
       .Add(Projections.Property("Numer")));

   var objList =  criteria.List<Object[]>()

它返回 50 个数组的集合,每个数组包含 2 个对象,我可以通过索引访问它们。 我想通过名称访问各个属性,所以我编写了以下代码:

        criteria.SetProjection(
            Projections.ProjectionList()
                .Add(Projections.Property("Id"))
                .Add(Projections.Property("Numer")));

        var myList = criteria.SetResultTransformer(Transformers.AliasToEntityMap).List<Hashtable>();

        var myElement = myList[0]["Id"];

据我在互联网上看到的,它应该返回字典列表。

但是: - myList 包含 50 个空项目 - myElement 为空。

我做错了什么?

【问题讨论】:

    标签: c# nhibernate criteria hibernate-criteria resulttransformer


    【解决方案1】:

    这里的技巧是:转换为key/value 字典...需要别名

    让我们像这样调整投影:

    criteria.SetProjection(
            Projections.ProjectionList()          // Alias
                .Add(Projections.Property("Id")   .As("Id"))
                .Add(Projections.Property("Numer").As("Number"));
    

    剩下的就可以了……

    【讨论】:

      猜你喜欢
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 2013-12-22
      相关资源
      最近更新 更多