Значение по умолчанию не работает с DateTime и Fluent Nhibernate 1.2? - PullRequest
2 голосов
/ 23 мая 2011

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

Итак, в моем беглом отображении я сделал

   Map(x => x.EndOfTerm).Default("5/21/2011").Not.Nullable();

И все же каждый раз, когда я пытаюсь что-то сохранить без указания EndOfTerm, происходит сбой

SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.

Когда я присваиваю EndOfTerm значение, оно больше не падает.

Ответы [ 2 ]

6 голосов
/ 23 мая 2011

insert = "false" update = "false" не позволяет NHibernate использовать это поле в инструкциях INSERT и UPDATE, что вынуждает базу данных генерировать значение по умолчанию ( Ref. ). Итак имеем:

Map(x => x.EndOfTerm).Default("5/21/2011").Not.Nullable().Not.Insert().Not.Update().Generated.Always();
2 голосов
/ 23 мая 2011

Я думаю, что вы можете использовать DynamicUpdate () и DynamicInsert () в ваших картах классов, если вы хотите использовать значения по умолчанию, указанные в вашей базе данных для свойств, которые вы не установили. Если вы не используете какой-либо из этих способов, NHibernate попытается обновить / вставить все столбцы независимо от того, являются ли они грязными или нет. Ниже взято из документации NHibernate.

(7) dynamic-update (необязательно, по умолчанию false): указывает, что UPDATE SQL должен создаваться во время выполнения и содержать только те столбцы, значения которых были изменены.

(8) dynamic-insert (необязательно, по умолчанию false): указывает, что INSERT SQL должен генерироваться во время выполнения и содержать только столбцы, значения которых не равны NULL.

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