Fluent nhibernate fluent hibernate Transformers.AliasToBean未按预期工作
我有三张桌子。一个是主表:TableA。一个表由名为ReferencedTable的表引用,最后一个表由ReferencedTable引用 我有一个查询,返回最近的十个对象,如下所示: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)
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)