加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 使用EF4转换为datetime时发生溢出

发布时间:2020-12-15 18:48:36 所属栏目:asp.Net 来源:网络整理
导读:我有一个使用SQL Compact 4.0数据库的Windows应用程序,使用EF 4.1和代码优先方法。 我无法保存对象到数据库,因为我得到一个异常,与内部异常 “转换为datetime时发生溢出” 当尝试保存类型报价: public class Quotation{ public int ID { get; set; } pub
我有一个使用SQL Compact 4.0数据库的Windows应用程序,使用EF 4.1和代码优先方法。
我无法保存对象到数据库,因为我得到一个异常,与内部异常
“转换为datetime时发生溢出”
当尝试保存类型报价:
public class Quotation
{
    public int ID { get; set; }

    public string Name { get; set; }

    public DateTime DateCreated { get; set; }

    public ContactPerson ContactPersonAssigned { get; set; }

    public string OurReference { get; set; }

    public string QuotationDataString { get; set; }
}

我读到这个错误可能是由于我的应用程序设置和有关转换日期的sql compact数据库设置之间的不匹配引起的。
我不确定,因为我的sdf数据库文件有一个字段正确名为“DateCreated”,不可空,类型为“datetime”。

我刚接触SQL compact。你能帮我调试这个问题吗?

解决方法

如果您的模型具有类型为DateTime的不可空属性,则当您发布具有该值的空值的表单时,它将自动设置为DateTime.MinValue,它在.net 01/01/0001( DateTime.MinValue on MSDN)中。

(作为附注,您可以通过为DateTime实现自己的IModelBinder来更改此行为,如果尝试的值为空/空且属性不可为空,则可以抛出验证异常)。

如果您尝试将该值(DateTime.MinValue)保存到数据库中,则如果数据库字段为sql type datetime,则会得到转换错误,因为.net DateTime.MinValue小于SQL datetime minvalue(01/01/1753),因此无法转换为sql值。 (SQL datetime min value on MSDN)

较新版本的MS SQL Server将不会发生此错误,它具有datetime2数据类型,允许从01/01/0001到31/12/9999(SQL datetime2 on MSDN)的值(如果datetime2用于该字段,则当然)。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读