Можно ли заставить NHibernate автоматически генерировать идентификатор, если у объекта его нет, или использовать идентификатор объекта, если он у него уже есть? - PullRequest
2 голосов
/ 14 октября 2010

Согласно философии REST, операция PUT должна (взята из Википедии):

PUT <a href="http://example.com/resources/142" rel="nofollow">http://example.com/resources/142</a>

Обновить адрес членаколлекция, или, если она не существует, создать это.

Кажется, что NHibernate имеет два способа работы с идентификаторами сущностей:

  1. Авто-генерируйте идентификатор, независимо от того, какое значение пользователь установил.
  2. Используйте идентификатор, назначенный пользователем, но потеряйте все возможности автоматической генерации.

Проблема здесь с PUT операция - это часть о создании сущности, если она не существует.Я предполагаю, что если вы PUT ресурс не существует, он создаст его с идентификатором , как указано в URL (например, 142, если мы используем приведенный выше пример).Тем не менее, NHibernate не позволяет вам установить идентификатор, если он генерируется автоматически.

Так что мой вопрос, есть ли способ заставить NHibernate автоматически генерировать идентификатор, если у объекта его нет?(или имеет значение по умолчанию для типа идентификатора, например 0 для целых чисел), но также сохраняет объект с идентификатором, установленным пользователем?

1 Ответ

1 голос
/ 14 октября 2010

Обычно плохая идея использовать назначенные идентификаторы.

Ваша ситуация ближе к тому, что называется NaturalId . Вы должны использовать это, я думаю. Вам понадобятся два разных свойства: одно для первичного ключа базы данных, а второе - для идентификатора, видимого для пользователей.

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