Получение NHibernate для сохранения или обновления с использованием столбца, отличного от <id> - PullRequest
1 голос
/ 13 августа 2010

Как заставить NHibernate сохранять или обновлять, используя столбец, отличный от <id>? Я реализовал столбец ключа идентификации в таблице, но это не то, что делает строку уникальной. Я знаю, что «составной идентификатор» существует, но я слышал, что его следует использовать только в устаревших базах данных, где нет большой свободы для его изменения. Есть ли другой способ реализовать уникальные ключи без использования искусственного ключа? Должен ли я создать свой собственный ключ на основе хэша столбцов, которые делают строку уникальной? Если я это сделаю, NHibernate не будет жаловаться, когда он пытается вставить объект с назначенным вручную ключом?

Ответы [ 2 ]

4 голосов
/ 13 августа 2010

NHibernate имеет множество опций для первичных ключей .Вы можете использовать любой из доступных встроенных генераторов или назначенный приложением ПК («назначенный» вариант генератора).

Если ни один из этих вариантов вам не подходит, вы всегда можете реализовать свой собственный IIdentifierGeneratorНо прежде чем делать это, подумайте очень трудно : встроенные генераторы и обработка PK инкапсулируют годы опыта СУБД от многих экспертов.

Составные ПК - как правило, не стоит сложность, которую они добавляют .

1 голос
/ 13 августа 2010

Уникальность строк БД полностью отличается от определения, какую строку вы хотите обновить.

Почему бы не использовать уникальные ограничения, чтобы обеспечить уникальность ваших записей и следовать стандартной практике использования идентификаторов.

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