Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Доступ к NHibernate Entity через проекцию

Автор вопроса: BenОтветов: 1

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

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

Может ли кто-нибудь предоставить код, который позволит мне использовать проекцию для доступа к объекту в дочернем классе?

entityprojectionnhibernate

Ответы

Ответ 1 · рейтинг 1 · iammichael

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

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

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы