2010-04-24 80 views
4

我正在映射一個非常簡單的用戶表,並且我有一個名爲'LastLoginDate'的列被定義爲可在SQL Server中爲空。流利的NHibernate SqlDateTime溢出異常

我的映射是這樣的:

public Users { 
    Id(x => x.UserId); 
    Map(x => x.UserName); 
    ... 
    ... 
    Map(x => x.LastLoginDate).Nullable(); 
} 

但每次我嘗試以編程方式保存這個實體,我總是得到SQLDATETIME溢出異常。 如果我嘗試在此列中輸入一個帶有'null'的手動sql語句,它就可以工作。 如果我註釋掉這個屬性,它也會起作用。

有什麼問題?

提前致謝!

回答

12

你的實體應該是這樣的:

public class User 
{ 
    public virtual DateTime? LastLoginDate {get;set;} 
    // etc 
} 

然後,你的地圖應該正常工作。

編輯:在DateTime之後的?指定它是可空的,並且是Nullable<DateTime>的簡寫形式。如果這不是您的錯誤的原因,您可能需要檢查Fluently.Configure指定SqlServer的正確版本。

+0

哇,我現在覺得很愚蠢!... 有時很難看出你忘記了一些如此微不足道的東西:) 謝謝! – gillyb 2010-04-24 21:46:34

+0

沒問題,我一直這樣做。有時你只需要第二雙眼睛。 – 2010-04-24 21:52:49

+0

我有完全相同的問題,但使DateTime爲空可簡單地不適合我。不知道什麼可能是錯的。 – Jonathan 2011-06-19 09:38:46