我有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一个值时,它不再崩溃。
答案 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的列。