SqlDateTime溢出。必须在1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间

时间:2012-02-23 15:01:52

标签: asp.net database entity-framework

我在DB中有Subscribers表,它包含默认值GetDate()的DateCreate字段。 当我尝试通过Entity Framework向表中添加新记录时:

        Subscribers subs = new Subscribers();
        subs.Email = email;
        subs.DateCreate = DateTime.Now;
        DataBase.DBContext.AddToSubscribers(subs);
        DataBase.DBContext.SaveChanges();

它抛出一个异常: SqlDateTime溢出。必须在1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间。

谁能帮帮我? 感谢。

3 个答案:

答案 0 :(得分:4)

  1. 确保您的机器时钟不是15世纪; - )
  2. 重新创建模型。
  3. 您的表格具有默认值,您无需在代码中设置它。
  4. 考虑使用GETUTCDATE()代替GETDATE()
  5. 确保没有其他DateTime字段没有默认值。

答案 1 :(得分:2)

这是一个迟到的答案,但我刚才遇到了同样的问题。出现此问题的原因是您的实体中有另一个日期,默认值(MinValue)为1/1/0001。在SQL / Server中,默认值(MinValue)是1/1/1753或其他。

我找到了一篇很棒的文章,帮助我在vfstech.com,这建议在数据库中使用datetime2而不是datetime,但这对我来说不是一个选项。但是它也有代码可以双向进行翻译。我很快创建了一个继承自我的实体类的类,并在我的应用程序中使用它,它很好地解决了我的问题,而不必用我认为微软应该已经正确实现的东西来感染我的业务逻辑。

答案 2 :(得分:0)

如果您在.Net代码中使用Convert.ToDateTime(),请检查应用程序托管服务器的日历设置,主要是时区和短日期格式