默认值不适用于DateTime和Fluent Nhibernate 1.2?

时间:2011-05-22 21:47:53

标签: nhibernate fluent-nhibernate

我有datetime列,如果没有提供默认值,我想放一个默认值。

所以在我的流利映射中我做了

   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 个答案:

答案 0 :(得分:6)

insert =“false”update =“false”阻止NHibernate在INSERT和UPDATE语句中使用该字段,从而强制数据库生成默认值(Ref.)。 所以我们有:

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

答案 1 :(得分:2)

我想你可能想在你的ClassMaps中使用 DynamicUpdate() DynamicInsert(),如果你想使用数据库中指定的默认值来获取你没有的属性组。如果您不使用这些NHibernate中的任何一个将尝试更新/插入所有列,无论它们是否脏。以下内容摘自NHibernate文档。

(7) dynamic-update (可选,默认为false):指定应在运行时生成UPDATE SQL,并且仅包含值已更改的列。

(8) dynamic-insert (可选,默认为false):指定应在运行时生成INSERT SQL,并且仅包含值不为null的列。