NHibernate - Composite-Id для отношения - где ID родителя не является таким же составным - PullRequest
1 голос
/ 17 декабря 2008

Скажите, у меня есть эти таблицы в базе данных Oracle

лицо:
PersonId <- идентификатор PK (int, из последовательности) <br> PersonFirstNameID <- int <br> PersonLastNameID <- int <br> PersonSecurityID <- int </p>

PersonDetails
PersonFirstNameID -CompositeKey
PersonLastNameID -CompositeKey
PersonSecurityID -CompositeKey
PersonDetailKey
PersonDetailValue
PersonDetailRisk

Теперь я хочу смоделировать отношение один ко многим из PersonDetails в NHibernate.

Как я могу это сделать? Я попытался настроить компонент, представляющий составной Id, и передать его в один для многих через свойство ref, однако это генерирует SQL с дублирующимися столбцами и выдает следующее: System.ArgumentException: несоответствие типов идентификаторов; Найдено: Ожидаемое:

Документация NHibernate говорит только об этом, когда составной Id одинаков для обоих ..

Да ... Это не моя схема БД, это устаревшая БД и доступ к ней очень ограничен.

1 Ответ

0 голосов
/ 18 декабря 2008

Не совсем понятно.

Чтобы связь с внешним ключом работала, дочерний элемент должен ссылаться на первичный ключ родительского элемента, поэтому структура данных предполагает, что первичным ключом person является FirstNameId / lastNameid / securityid (и, следовательно, лучше всего игнорировать персонифицированный столбец).

Является ли Person_Id на самом деле первичным ключом (определенным как PK в БД) или версия базы данных первичного ключа PERSON фактически FirstNameId / lastNameid / securityid?

...