NHibernate Bag Mapping - PullRequest
       6

NHibernate Bag Mapping

1 голос
/ 03 февраля 2009

Мне нужна ручная картография коллекции.

Я использую таблицу соединений для хранения ссылок на идентификаторы комнат и идентификаторы calEvent. Тем не менее, поиски будут в основном основаны на buildingID комнаты - поэтому я хотел бы добавить buildingID к следующему сопоставлению. Кто-нибудь знает, как это сделать?

Я просмотрел документы NHibernate, но ничего не могу найти.

<bag name="rooms" table="tb_calEvent_rooms" lazy="false">
  <key column="calEventID"/>
  <many-to-many class="BasicRoom" column="roomID"/>
</bag>

Класс:

public class BasicRoom 
{
    private long _id;
    private long _buildingID;
    private string _roomName;

Любые советы / помощь высоко ценится.

Рассуждение:

Комната никогда не изменит здание, поэтому, если я добавлю buildingID в таблицу соединений; Я уменьшу сложность оператора select из чего-то вроде -

SELECT *
FROM
  dbo.tb_calEvent_rooms
  INNER JOIN dbo.tb_calEvents ON (dbo.tb_calEvent_rooms.calEventID = dbo.tb_calEvents.id)
  INNER JOIN dbo.tb_rooms ON (dbo.tb_calEvent_rooms.roomID = dbo.tb_rooms.id)
  INNER JOIN dbo.tb_buildings ON (dbo.tb_rooms.buildingID = dbo.tb_buildings.id)
WHERE
  dbo.tb_buildings.id = 54

К

SELECT *
FROM
  dbo.tb_calEvents
  INNER JOIN dbo.tb_calEvent_rooms ON (dbo.tb_calEvents.id = dbo.tb_calEvent_rooms.calEventID),
  dbo.tb_buildings
WHERE
  dbo.tb_buildings.id = 54

Верны ли мои рассуждения?

1 Ответ

1 голос
/ 03 февраля 2009

Удалите атрибут column из элемента many-to-many и добавьте его в качестве дочернего узла вместе с дополнительным элементом column, ссылающимся на buildingID:

<bag name="rooms" table="tb_calEvent_rooms" lazy="false">
  <key column="calEventID"/>
  <many-to-many class="BasicRoom">
    <column name="roomID"/>
    <column name="buildingID"/>
  </many-to-many>
</bag>

Это должно позволить вам делать запросы на основе buildingID, а также roomID.

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