Внешний ключ Nhibernate для сопоставления коллекции внешних ключей? - PullRequest
1 голос
/ 05 января 2009

У меня есть объект Staff и e SecuredPage, а свойства ниже

Персонал

идентификатор название Фамилия Уровень // SecuredPage.RoleId

SecuredPage

идентификатор PageId RoleId // Staff.Level

Я хочу иметь коллекцию SecuredPage в сущности Staff, так что это один-ко-многим, но я не могу понять, как справиться с ней при отображении.

Staff.hbm.xml

<bag name="SecuredPages"  lazy="true" inverse="false" cascade="none">
      <key column="RoleId" />
      <many-to-many class="RealEstate.Core.Domain.SecuredPage,RealEstate.Core" />
</bag>

с кодом выше Nhibernate получает все записи из таблицы SecuredPage, где

SecuredPage.RoleId = Staff.id

Но я хочу, чтобы это было

SecurePage.RoleId = Staff.StaffLevel

Я не создал Ролевую сущность по некоторым причинам, поэтому я напрямую пытаюсь получить защищенные страницы для персонала на основе его уровня (роли)

Я надеюсь, что смогу рассказать вам о своей проблеме. Я проверил руководство Nhibernate, прочитал все о сопоставлениях коллекций, но я не мог понять это.

Спасибо

1 Ответ

1 голос
/ 05 января 2009

Я думаю, проблема в том, что это не на самом деле один ко многим. На самом деле это выражение отношения многих ко многим.

Я знаю, что это не похоже на то, что вы хотели услышать (как вы сказали, вы не создали Ролевую сущность), но вы можете подумать об этом ради себя.

Существует ли таблица "Роль", которая будет служить перекрестной ссылкой между этими двумя таблицами, которые вы представили?

Если нет, сделайте его, и это поможет решить проблему. Если это так, вы можете захотеть рассматривать взаимоотношения между сотрудниками и ролями как прямые, а сотрудников и SecuredPages как косвенные (через роли, которые они есть).

РЕДАКТИРОВАТЬ: Можете ли вы сказать нам, почему вы не создали "Роль" сущность? Это может помочь уточнить для нас.

...