NHibernate通过投影访问实体

NHibernate通过投影访问实体,nhibernate,entity,projection,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()”来减少

我有这个映射文件:

'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 of:WebTools.Data.Common.IHObjekt

我试图访问子实体,但似乎只能访问父类中的值。比如:

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

有人能提供一些代码让我使用投影来访问子类中的实体吗?

您需要创建一个别名来引用子实体的属性

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

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

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

您需要创建别名以引用子实体的属性

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

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

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