NHibernate Entity доступ через проекцию - PullRequest
1 голос
/ 13 октября 2010

У меня есть этот файл сопоставления:

'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"'  

И я хотел бы использовать 'Projection.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 Ответ

1 голос
/ 13 декабря 2010

Вам необходимо создать псевдоним, чтобы ссылаться на свойства дочерней сущности.

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

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

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