Fluent nhibernate fluent hibernate Transformers.AliasToBean未按预期工作

Fluent nhibernate fluent hibernate Transformers.AliasToBean未按预期工作,fluent-nhibernate,queryover,Fluent Nhibernate,Queryover,我有三张桌子。一个是主表:TableA。一个表由名为ReferencedTable的表引用,最后一个表由ReferencedTable引用 我有一个查询,返回最近的十个对象,如下所示: TableADTO TableAlias = null; LookupTableDTO LookupTableAlias = null; ReferencedDTO ReferencedAlias = null; dtos = session.QueryOver(() => TableAlias)

我有三张桌子。一个是主表:TableA。一个表由名为ReferencedTable的表引用,最后一个表由ReferencedTable引用

我有一个查询,返回最近的十个对象,如下所示:

TableADTO TableAlias = null;
LookupTableDTO LookupTableAlias = null;
ReferencedDTO ReferencedAlias = null;

dtos = session.QueryOver(() => TableAlias)
          .JoinAlias(() => TableAlias.Object, () =>ReferencedAlias)
          .JoinAlias(() => ReferencedAlias.ObjectType, () => LookupTableAlias)
          .Where(() => ReferencedAlias.PersonId == user.Id &&
                       (LookupTableAlias.Id != INVOICE_ID ||
                        LookupTableAlias.Id != FINANCIAL_ID) &&
                       TableAlias.Status == NEW_STATUS_FLAG &&
                       ReferencedAlias.ReceivedDate < DateTime.Now)
          .Take(10)
          .List()
          .Select(dto=>
          new AbreviatedDTO
          {
              Id = dto.Referenced.Id,
              Field1 = dto.Field1,
              Priority = dto.Referenced.Priority,
              ReceivedDate = dto.Referenced.ReceivedDate,
              Field1 = dto.Referenced.Field1,
              Type = dto.Referenced.Lookup.TypeCode,
              Status = dto.Status
          }).ToList();    
TableADTO TableAlias=null;
LookupTableDTO LookupTableAlias=null;
ReferencedTo ReferencedAlias=null;
dtos=session.QueryOver(()=>TableAlias)
.JoinAlias(()=>TableAlias.Object,()=>ReferencedAlias)
.JoinAlias(()=>ReferencedAlias.ObjectType,()=>LookupTableAlias)
.Where(()=>ReferencedAlias.PersonId==user.Id&&
(LookupTableAlias.Id!=发票\u Id||
LookupTableAlias.Id!=财务Id)&&
TableAlias.Status==新状态标志&&
ReferencedAlias.ReceivedDate
新删节
{
Id=dto.Referenced.Id,
Field1=dto.Field1,
优先级=dto.Referenced.Priority,
ReceivedDate=dto.Referenced.ReceivedDate,
Field1=dto.Referenced.Field1,
Type=dto.Referenced.Lookup.TypeCode,
状态=数据到状态
}).ToList();
这正如预期的那样有效。然而,我认为下面的转换也会起作用。它确实带来了10个对象,但这些对象都有默认值,并且没有填充(例如abrevieddto.ReceivedDate=DateTime.Minimum)。我是不是有什么问题

任何帮助都将不胜感激。 比尔

TableDTO TableAlias=null;
LookupTableDTO LookupTableAlias=null;
ReferencedTo ReferencedAlias=null;
dtos=session.QueryOver(()=>TableAlias)
.JoinAlias(()=>TableAlias.Object,()=>ReferencedAlias)
.JoinAlias(()=>ReferencedAlias.ObjectType,()=>LookupTableAlias)
.Where(()=>ReferencedAlias.PersonId==user.Id&&
(LookupTableAlias.Id!=发票\u Id||
LookupTableAlias.Id!=财务Id)&&
TableAlias.Status==新状态标志&&
ReferencedAlias.ReceivedDatelist
.Select(x=>TableAlias.Field1)
.Select(x=>ReferencedAlias.Id)
.Select(x=>ReferencedAlias.Field1)
.Select(x=>ReferencedAlias.ReceivedDate)
.Select(x=>ReferencedAlias.Priority)
.Select(x=>LookupTableAlias.TypeCode))
.TransformUsing(Transformers.AliasToBean())
.Take(10)
.List()

您需要为每个选定字段定义一个别名,该别名与生成的dto中的propertyname相同

AbreviatedDTO alias = null;

// in query
    .SelectList(list => list
        .Select(() => TableAlias.Field1).WithAlias(() => alias.Field1)
AbreviatedDTO alias = null;

// in query
    .SelectList(list => list
        .Select(() => TableAlias.Field1).WithAlias(() => alias.Field1)