Когда ID генерируется в NHibernate - PullRequest
2 голосов
/ 06 марта 2012

Что я хочу знать, так это когда NHibernate присваивает / генерирует значение для поля Id. После того, как объект сохранен в хранилище? Мне нужно использовать Product Id для создания составного имени файла. Но когда я использую Id перед сохранением сущности в хранилище, я получаю Guid.Empty.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 06 марта 2012

Мне интересно, зачем вам нужно использовать Id перед сохранением? Конечно, использование Id после его успешной фиксации в базе данных является правильным подходом. В конце концов, если вы используете Id, а затем обнаружите, что база данных не сохранила сущность, то это даст вам нежелательные побочные эффекты.

Однако есть обходной путь, но он не очень хорош.

Установите генератор id на назначенный. Это связано с некоторыми оговорками: вы не можете использовать SaveOrUpdate, так как NHibernate не сможет обнаружить, что это новая сущность или объект, который нуждается в обновлении. Это означает, что вы должны либо явно использовать Save, либо Update методы

0 голосов
/ 06 марта 2012

см. Ссылку ниже для ответа

http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-id

"Но когда я использую Id перед сохранением сущности в хранилище, я получаю Guid.Empty" -> id будет сгенерирован только после записи его в базу данных... если вы хотите получить идентификатор раньше, я бы предложил использовать назначенный генератор идентификаторов, где вы можете создать свой идентификатор перед тем, как ваша запись будет сохранена в БД.

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