Как объединить две таблицы вместе со столбцами, которые не являются ключами (в NHibernate)?

У меня есть одна таблица с идентификатором (PK) и другая таблица с кучей информации. Будет связь один-ко-многим из первой таблицы с некоторыми данными во второй таблице, но нигде нет FK. Итак, я хочу выполнить внутреннее соединение для table1.Id с table2.OtherId.

У меня есть моя модель, настроенная с помощью IList, и на моей карте table1 у меня есть:

HasMany(x => x.Properties).KeyColumn("table2id");

но я думаю, поскольку он не знает, с чем соединить этот столбец в первой таблице, это не сработает. Я знаю, что модель table2 работает правильно, потому что я пробовал ее сам по себе и получил все правильные данные. Просто эта штука HasMany запуталась.

Я просмотрел другие «связанные» вопросы здесь, на SO, но не вижу ничего, что мне подходит.


person Harry    schedule 12.02.2011    source источник


Ответы (2)


Вам не обязательно иметь отношение FK, но столбец, указанный в KeyColumn, должен быть первичным ключом таблицы2. Я не знаю обходного пути.

person Jamie Ide    schedule 12.02.2011
comment
Я пробовал свойство-ссылка, но у меня все еще та же проблема (получение этой ассоциации ссылается на несопоставленную ошибку класса) - person Harry; 13.02.2011

Так получилось, что мне нужно было иметь References в таблице Table2, отображаемой на Table1. А потом просто HasMany(x => x.Properties).Inverse.Cascade.None() в Table1 Mapping разобрался.

person Harry    schedule 14.02.2011