Мне нужна рука, отображающая коллекцию.NHibernate Bag Mapping
Я использую таблицу соединений, чтобы удерживать ссылки на идентификаторы номеров и идентификаторы 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 *
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
ли мои рассуждения правильно?
Спасибо за это, Я получаю следующее сообщение об ошибке. faultString = "Внешний ключ (FK3EDE57A96B977B0C: tb_calEvent_rooms [roomID, buildingID])) должен иметь такое же количество столбцов, что и ссылочный первичный ключ (tb_rooms [id])" Я предполагаю, что неправильное отображение номера или здания. Hmmmmm .. – user17510
Да, вам нужно будет включить оба столбца в качестве PK в таблице с ссылками. –