【问题标题】:NHibernate: Combining result transformers?NHibernate:组合结果转换器?
【发布时间】:2012-03-25 15:54:15
【问题描述】:

我正在使用标准 API,查询我无法真正更改的映射文件。有一个根实体,其中加入了许多子实体,某些查询要求我们添加

criteria.SetResultTransformer(CriteriaSpecification.DistinctRootEntity);

为了避免在由于连接而存在多个 SQL 结果行时获得重复的实体。问题是现在我还想应用一个 alias-to-bean 转换器,如下所示:

criteria.SetResultTransformer(Transformers.AliasToBean(typeof(MyDto)));

使用其中任何一种效果都很好。但是,我需要将它们组合起来:我只想将所需的列加载到 DTO 对象中,并且只获取不同的根实体。我该怎么做?

【问题讨论】:

    标签: nhibernate nhibernate-criteria


    【解决方案1】:

    要仅将所需的列加载到 DTO 中,您可以使用 DistinctEntityRootTransformer 的投影,如下所示

    ICriteria criteria = session.CreateCriteria(typeof(YourEntity));
    criteria.SetProjection(
    Projections.Distinct(Projections.ProjectionList()
        .Add(Projections.Alias(Projections.Property("Property"), "Property")));
    
    criteria.SetResultTransformer(
    new NHibernate.Transform.AliasToBeanResultTransformer(typeof(MyDto)));
    
    IList list = criteria.List();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      • 2019-12-10
      • 2017-05-03
      • 2013-09-18
      • 1970-01-01
      相关资源
      最近更新 更多