gpt4 book ai didi

c# - 使用 Fluent NHibernate 和 MVC 3 的 SqlDateTime 溢出

转载 作者:行者123 更新时间:2023-12-02 22:14:18 24 4
gpt4 key购买 nike

我正在使用 FNH 生成 ASP.NET MVC3 应用程序中使用的库的大约 30 个类的映射。我正在使用 MSSQL Express 10。我创建了一些代码,允许我用一些数据填充数据库以用于开发目的。但是,当我尝试保存 Account 实例时,我收到此错误消息:

System.Data.SqlTypes.SqlTypeException: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.

发生这种情况是因为 Account.CreationDate 属性是一个 DateTime。我环顾四周发现 MSSQL 和 .NET 中的 DateTime 实际上并不相同。我尝试过,通过 FNH 映射强制列为“datetime2”,但这似乎没有帮助。

这是我的帐户类(简化版):

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 date: 2/6/2013 5:32:29 PM ; Exception: System.Data.SqlTypes.SqlTypeException: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.

最佳答案

问题是 DateTime 属性没有设置为“可空”,因此没有将此属性设置为“Null”,而是一直设置为 01/01/0001,因此触发了超出范围错误。

因此在类(即:public virtual DateTime?CreationDate { get; set;})以及映射(Map(x => x .CreationDate).Nullable;) 是必需的。

否则,即使您将属性设置为 null,它也会显示为 01/01/0001。一旦属性为 nullable,它的值就真的是 null,查询成功。

关于c# - 使用 Fluent NHibernate 和 MVC 3 的 SqlDateTime 溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14734425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com