nHibernate, как запросить родительский объект с несколькими отношениями - PullRequest
0 голосов
/ 17 июля 2009

У меня есть (на самом деле, несколько) связь между двумя объектами, родительский объект - Пользователь , а дочерний объект - Инцидент . Между Пользователь и Инцидент :

определены четыре взаимосвязи.
  1. Свойство Пользователь _ создал из Инцидент относится к Пользователю , создавшему Инцидент
  2. Свойство Пользователь _ изменил , кто изменил Инцидент
  3. Пользователь _ сообщил и наконец
  4. Пользователь _ ответственность

Все эти четыре свойства Инцидент ссылаются на Пользователь объект. Как это в отображении:

<many-to-one name="User_created" class="User, WebbData" fetch="select">
    <column name="created_by" not-null="true" />
</many-to-one>
<many-to-one name="User_modified" class="User, WebbData" fetch="select">
        <column name="modified_by" not-null="false" />
</many-to-one>
<many-to-one name="User_reported" class="User, WebbData" fetch="select">
        <column name="reported_by" not-null="true" />
</many-to-one>
<many-to-one name="User_responsible" class="User, WebbData" fetch="select">
    <column name="responsible" not-null="false" />
</many-to-one>

Я хочу написать выражение nHibernate для извлечения всех инцидентов, созданных конкретным пользователем, но я не знаю, как написать это выражение ... Вот что я получил до сих пор:

 return session.CreateCriteria(typeof(Incident))
     .CreateCriteria("User")
         .Add(Expression.Eq("Id", UserID))
     .List<Incident>();

но как, черт возьми, я говорю nHibernate, что он должен использовать отношение Пользователь _ созданный , а не одно из трех других?

1 Ответ

0 голосов
/ 17 июля 2009

Я думаю, что это работает, с прямым присвоением идентификатора свойству объекта:

 return session.CreateCriteria(typeof(Incident))
     .Add(Expression.Eq("User_created", UserID))
     .List<Incident>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...