Как получить NHibernate, чтобы сохранить сущность, если я назначу ей идентификатор, но сгенерирую его в противном случае? - PullRequest
2 голосов
/ 08 октября 2010

Согласно философии REST, запрос PUT должен обновить ресурс по URL-адресу, если он существует, и создать его, если он не существует. Другими словами, если я использую следующий URL:

PUT http://server/item/5

Если существует Item с идентификатором 5, он будет обновлен. Если Item не существует с идентификатором 5, будет создан новый Item с идентификатором 5.

Тем не менее, я использую NHibernate для персистентности, и я назначил свои идентификаторы как Identity. Это означает, что независимо от того, какое значение я назначу идентификатору, NHibernate заменит его своим собственным при сохранении нового Item.

Как заставить NHibernate сохранить Item с идентификатором, который я ему назначил, без изменения сопоставления идентификатора на Assigned?

1 Ответ

2 голосов
/ 08 октября 2010

Если вы используете Identity, БД не позволит вам ввести значение.

Тем не менее, если ваша БД имеет специальный синтаксис, позволяющий вставлять явные значения в поля Identity, вы можете реализовать свой собственный генератор, который, я гарантирую, будет подвержен ошибкам, труден для отладки и не очень полезен. Но это возможно.

Изучите все в https://nhibernate.svn.sourceforge.net/svnroot/nhibernate/trunk/nhibernate/src/NHibernate/Id и начните создавать свой Франкенштейн: -)

...