NHibernate QueryOver与SelectList

阿弗鲁

我对一个表有多个查询。由于并非所有列/属性都是必需的,因此我将在选择列表的帮助下指定列。以以下方法为例。此方法有效

public IEnumerable<ResultDto> GetEntityAsDto(eStatusBinderProduktion fromState, eStatusBinderProduktion toState)
{
    EntityClass entityAlias = null;
    ResultDto resultAlias = null;

    var query = Session.QueryOver<EntityClass>(() => entityAlias)
      .Where(() => entityAlias.ProduktionStatus >= (byte)fromState)
      .And(() => entityAlias.ProduktionStatus <= (byte)toState);

    query.SelectList(list => list
         .Select(() => entityAlias.PrimaryID).WithAlias(() => resultAlias.PrimaryID)
         .Select(() => entityAlias.SecondaryID).WithAlias(() => resultAlias.SecondaryID)
         );

    return query.TransformUsing(Transformers.AliasToBean<ResultDto>())
          .List<ResultDto>();
}

由于需要在多个方法中定义SelectList,因此我尝试将SelectList移到单独的方法中。

以下代码不起作用,NHibernate引发异常

NHibernate.QueryException:'无法解析属性:MyProjectNamespace.DAL.Interfaces.Entities.EntityClass的entity.PrimaryID'“

public IEnumerable<ResultDto> GetEntityAsDto(eStatusBinderProduktion fromState, eStatusBinderProduktion toState)
{
    EntityClass entityAlias = null;
    ResultDto resultAlias = null;

    var query = Session.QueryOver<EntityClass>(() => entityAlias)
      .Where(() => entityAlias.ProduktionStatus >= (byte)fromState)
      .And(() => entityAlias.ProduktionStatus <= (byte)toState);

    MapPropertiesOfEntityToResult(entityAlias, resultAlias, query);

    return query.TransformUsing(Transformers.AliasToBean<ResultDto>())
          .List<ResultDto>();
}

private void MapPropertiesOfEntityToResult(EntityClass entity, ResultDto resultAlias, IQueryOver<EntityClass, EntityClass> query)
{
  query.SelectList(list => list
   .Select(() => entity.PrimaryID).WithAlias(() => resultAlias.PrimaryID)
   .Select(() => entity.SecondaryID).WithAlias(() => resultAlias.SecondaryID)
    );
}

附加信息:
-映射正确
-表中填充了测试数据

拉迪姆·科勒

我们不需要别名来填充SelectList。我们可以从附带的Type参数中受益IQueryOver<TRoot,TSubType>

//private void MapPropertiesOfEntityToResult(EntityClass entity
//   , ResultDto resultAlias, IQueryOver<EntityClass, EntityClass> query)
private void MapPropertiesOfEntityToResult( // no need for entity
      ResultDto resultAlias, IQueryOver<EntityClass, EntityClass> query)
{
  query.SelectList(list => list
   //.Select(() => entity.PrimaryID).WithAlias(() => resultAlias.PrimaryID)
   //.Select(() => entity.SecondaryID).WithAlias(() => resultAlias.SecondaryID)
   .Select(entity => entity.PrimaryID).WithAlias(() => resultAlias.PrimaryID)
   .Select(entity => entity.SecondaryID).WithAlias(() => resultAlias.SecondaryID)
    );
}

entity现在的传入的参数Function,其类型是从哪里来的IQueryOver定义

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

nHibernate QueryOver和JoinQueryOver

来自分类Dev

NHibernate OR使用QueryOver

来自分类Dev

nHibernate QueryOver继承

来自分类Dev

NHibernate QueryOver与IUserType失败

来自分类Dev

NHibernate QueryOver NullReferenceException

来自分类Dev

nHibernate QueryOver继承

来自分类Dev

NHibernate 中的 QueryOver

来自分类Dev

NHibernate QueryOver主观在哪里?

来自分类Dev

NHibernate QueryOver,其中WhereRestriction为OR

来自分类Dev

NHibernate QueryOver有限制

来自分类Dev

在NHibernate的queryover中使用OR子句

来自分类Dev

NHibernate QueryOver从基础查询子类

来自分类Dev

NHibernate QueryOver主观在哪里?

来自分类Dev

nhibernate通用存储库queryover

来自分类Dev

NHibernate QueryOver,其中WhereRestriction为OR

来自分类Dev

NHibernate QueryOver有限制

来自分类Dev

Nhibernate QueryOver JoinAlias无关实体

来自分类Dev

NHibernate QueryOver投影多对一

来自分类Dev

流利的nHibernate查询=> QueryOver,联接,不同

来自分类Dev

多个表的NHibernate QueryOver连接语法

来自分类Dev

NHibernate QueryOver和string.format

来自分类Dev

具有JoinAlias的Nhibernate QueryOver上的TargetInvocationException

来自分类Dev

nHibernate QueryOver具有OR条件的子句

来自分类Dev

多列查询-使用QueryOver的Nhibernate

来自分类Dev

奇怪的NHibernate QueryOver语法错误

来自分类Dev

NHibernate QueryOver其中值是IN列表属性/字段?

来自分类Dev

带有NHibernate的QueryOver多个表

来自分类Dev

Nhibernate将ICriteria迁移到QueryOver

来自分类Dev

Nhibernate Queryover,如何访问嵌套的属性