我正在使用 FNH 生成 ASP.NET MVC3 应用程序中使用的库的大约 30 个类的映射。我正在使用 MSSQL Express 10。我创建了一些代码,允许我用一些数据填充数据库以用于开发目的。但是,当我尝试保存 Account 实例时,我收到以下错误消息:
System.Data.SqlTypes.SqlTypeException:SqlDateTime 溢出。必须介于 1753 年 1 月 1 日上午 12:00:00 和 9999 年 12 月 31 日晚上 11:59:59 之间。
这是因为 Account.CreationDate 属性是 DateTime。我环顾四周,MSSQL 和 .NET 中的 DateTime 实际上并不相同。我试过,通过 FNH 映射强制列是“datetime2”,但这似乎没有帮助。
这是我的 Account 类(简化):
public class Account
{
public virtual int Id { get; set; }
public virtual string Comment { get; set;}
public virtual DateTime CreationDate { get; set;}
public virtual string Email { get; set;}
public virtual string Password {get ; set;}
public virtual string Locale {get; set;}
public Account(string password, string email)
{
this.Email = email;
SetNewPassord(password);
this.CreationDate = DateTime.Now;
this.Locale = "en-US";
}
}
FNH 映射:
public class AccountMap : ClassMap<Account>
{
public AccountMap()
{
Id(x => x.Id);
Map(x => x.Comment);
Map(x => x.CreationDate);
Map(x => x.Email);
Map(x => x.Password);
Map(x => x.Locale);
}
}
我称之为的代码:
var compteAdmin = new Account("test", "noone@nowhere.com");
compteAdmin.Locale = "fr-FR";
var toto = compteAdmin.CreationDate;
try
{
session.Save(compteAdmin);
}
catch (Exception ex)
{
throw new ConfigurationException("Account.CreationDate: " + compteAdmin.CreationDate.ToString() + " ; Exception: " + ex);
}
请注意,出于调试的目的,我抛出了一些异常。那个输出有点超现实!
Account.Creation 日期:2/6/2013 5:32:29 PM;异常:System.Data.SqlTypes.SqlTypeException:SqlDateTime 溢出。必须介于 1753 年 1 月 1 日上午 12:00:00 和 9999 年 12 月 31 日晚上 11:59:59 之间。