【问题标题】:Fluent NHibernate SqlDateTime overflow exceptionFluent NHibernate SqlDateTime 溢出异常
【发布时间】:2011-02-11 22:25:21
【问题描述】:

我正在映射一个非常简单的用户表,并且我有一个名为“LastLoginDate”的列,它在 sql server 中定义为可为空。

我的映射如下所示:

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

但是每次我尝试以编程方式保存这个实体时,我总是得到 SqlDateTime 溢出异常。 如果我尝试在此列中输入带有“null”的手动 sql 语句,它会起作用。 如果我只注释掉这个属性,它也会起作用。

可能是什么问题???

提前致谢!

【问题讨论】:

    标签: c# .net nhibernate orm fluent-nhibernate


    【解决方案1】:

    您的实体应如下所示:

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

    那么,您的地图应该可以正常工作了。

    编辑:DateTime 之后的? 指定它是可空的,并且是Nullable<DateTime> 的缩写形式。如果这不是您的错误的原因,您可能需要检查 Fluently.Configure 是否指定了正确的 SqlServer 版本。

    【讨论】:

    • 哇,我现在觉得自己好傻!...有时很难看到你忘记了一些如此琐碎和小事:) 谢谢!
    • 没问题,我一直这样做。有时你只需要第二双眼睛。
    • 我遇到了完全相同的问题,但是让 DateTime 可以为空根本不适合我。不知道可能出了什么问题。
    • 我会仔细检查该列在数据库中是否标记为可为空。如果是,请清理您的解决方案并重建。此外,如果您使用的是 SQL Server 2008,它可能是 DateTime.MinValue,请参阅:stackoverflow.com/questions/5425610/… 在这种情况下,您需要覆盖:stackoverflow.com/questions/5506524/…
    • 如果clean和rebuild后还是有问题,那就清空二级缓存。在我的情况下,DateTime.MinValue 保存在缓存中,并在从缓存中读取数据时不断重新应用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 2023-03-12
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多