Согласно философии REST, операция PUT должна создать сущность, если она не существует, или обновить , если она существует. Например, если клиент выполняет эту операцию:
PUT http://server/user/5?firstname=John&lastname=Doe
Я должен ожидать, что пользователь с идентификатором 5 будет либо создан, либо обновлен.
Обновление легко с NHibernate; просто найдите пользователя и обновите имя и фамилию.
Однако как мне создать пользователя с идентификатором 5? По умолчанию NHibernate управляет всеми идентификаторами сущностей. Даже если вы установите идентификатор самостоятельно, NHibernate проигнорирует его и заменит его собственным. Если я переключусь на использование назначенных идентификаторов, то я могу назначить нового пользователя с идентификатором 5, но тогда я потеряю многие функции NHibernate.
Итак, другими словами, есть ли способ настроить NHibernate для использования сгенерированного идентификатора, если он не предоставлен, и для использования идентификатора пользователя, если он указан? Если нет, то как мне обойти эту проблему создания PUT с помощью NHibernate?