NHibernate - генерировать при вставке, предотвращая обновление значения - PullRequest
3 голосов
/ 12 сентября 2011

Я создал соглашение Fluent для сопоставления определенного атрибута, который сообщает, что свойство datetime не будет иметь значение null, и в базу данных будет вставлена ​​сегодняшняя дата для его значения, это его код:

instance.Not.Nullable();
instance.Default("getdate()");
instance.Generated.Insert();

Вставка работает как положено. Чего не ожидалось, так это того, что когда я обновляю запись и устанавливаю свойство («Изменено») на сегодняшнюю дату, значение не сохраняется - я вижу из оператора sql, сгенерированного NH, что его нет в утверждении. Я пытался добавить безрезультатно.

instance.Update();

Правильно ли я думаю, что это должно работать?

1 Ответ

4 голосов
/ 12 сентября 2011

Нет, это не должно работать.Если вы отображаете свойство как сгенерированное, оно генерируется только базой данных и не может быть изменено приложением.Вы указываете, что он генерируется только при вставке, а не при обновлении, потому что NH должен извлекать сгенерированное значение после вставки, а не после обновления.

Чтобы установить значения по умолчанию, я бы использовал конструкторы идругие методы объектно-ориентированного программирования.

...