быстрый nhibernate автоматический инкремент не ключевое свойство (Id)

Книга Дракона является определенно "книгой" компиляторов здания, но если Ваш язык не является вполне столь же сложным как текущее поколение языков, Вы можете хотеть посмотреть на шаблон Интерпретатора от Шаблоны разработки .

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

14
задан Matt Florence 20 July 2009 в 19:36
поделиться

1 ответ

Два варианта.

  • если база данных полностью отвечает за это, вам просто нужно чтобы сообщить NHibernate, что свойство создано, и не включать его ни в какие обновления / иснерты. Обратной стороной является то, что NH потребуется сделать дополнительный выбор, чтобы значение оставалось свежим в памяти.

  • если база данных не несет ответственности, и вы просто хотите, чтобы это выполнялось автоматически, вы можете использовать перехватчик, чтобы установить значение 1 при вставке и увеличить его на 1 при обновлении.

http://www.nhforge.org/doc/nh/en/index.html#objectstate-interceptors (11.1 - Перехватчики)

Вы должны переопределить OnSave (), чтобы найти свойство и установить начальное значение, а затем переопределите OnFlushDirty (), чтобы найти свойство свойства и приращение.


Изменить:

Я идиот, не заметил, как вы сказали Fluent NHibernate.


Изменить № 2:

I Думаете, вам также может быть интересно использовать этот столбец для контроля версий?

< version name="Foo" generated="always" />
9
ответ дан 1 December 2019 в 14:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: