2011-05-22 46 views
2

我有日期時間列,我想要把一個默認值,如果沒有提供。默認值不適用於DateTime和Fluent Nhibernate 1.2?

所以在我流利的映射我沒有

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

我不認爲'默認'做你認爲它的作用。 – 2011-05-23 00:02:01

+0

@ Diego Mijelshon - 當沒有給定的時候,它不會設置默認值嗎?我一直在使用它,並且它似乎也按我的預期工作。 – chobo2 2011-05-23 05:07:07

回答

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(); 
+0

爲什麼默認值與其他值一起工作而不是日期? – chobo2 2011-05-23 18:35:41

+0

你能更新鏈接嗎?它現在被打破了。 – shankbond 2015-06-09 04:55:58

+0

更新了鏈接。 – VahidN 2015-06-09 08:42:21

2

我想你可能需要使用DynamicUpdate()的dynamicInsert()在ClassMaps,如果你想使用你的數據庫還沒有設置屬性中指定的默認值。如果你不使用這兩種方法,NHibernate會嘗試更新/插入所有列,而不管它們是否髒。以下摘自NHibernate文檔。

(7)dynamic-update(可選,默認爲false):指定應該在運行時生成UPDATE SQL,並且只包含那些值已更改的列。

(8)dynamic-insert(可選,默認爲false):指定INSERT SQL應該在運行時生成並且只包含其值不爲空的列。