NHibernate Entity通过投影访问

时间:2010-10-13 07:08:19

标签: nhibernate entity projection

我有这个映射文件:

'class name="WebTools.Data.Common.IHObjekt, WebTools.Data" table="IHObjekt"'  
  ....
'property name="TYPBEZEICH" type="string"' 
...  
'many-to-one name="standort" column="STANDORT_ID" fetch="join"'  

我想使用'Projections.ProjectionList()'来减少查询返回列的数量。

我这样做:

'ICriteria criteria = Session.CreateCriteria(typeof(Data.Common.IHObjekt));'  
'ProjectionList projectionList = Projections.ProjectionList();'  
..   
'projectionList.Add(Projections.Property("standort.CODE"));'  

并收到此错误:

NHibernate.QueryException:无法解析属性:standort.CODE:WebTools.Data.Common.IHObjekt

我正在尝试访问子实体但看起来我只能访问父类中的值。像:

'projectionList.Add(Projections.Property("TYPBEZEICH"));' 

任何人都可以提供一些代码,让我使用投影来访问子类中的实体吗?

1 个答案:

答案 0 :(得分:1)

您需要创建别名才能引用子实体的属性。

ICriteria criteria = Session.CreateCriteria(typeof(Data.Common.IHObjekt));

criteria.CreateAlias("standort", "s", JoinType.InnerJoin);

ProjectionList projectionList = Projections.ProjectionList();
projectionList.Add(Projections.Property("s.CODE"));