已阅读过有关此问题的大量帖子,但未发现任何可行的内容。
我们的SQL数据库的字段设置如此(数据类型为datetime
)
相应的模型属性具有以下声明
[DisplayName("Effective Date")]
[Column(TypeName = "DateTime")]
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
public DateTime? EffectiveDate { get; set; }
然而,如果我输入日期11/11/1111
我的程序运行时出现以下错误DbContext.SaveChanges()
将datetime2数据类型转换为日期时间数据类型 导致超出范围的价值。该声明已被终止
我不知道,也没有发现我们的ASP MVC项目或SQL表中的任何范围规范。任何帮助非常感谢。
答案 0 :(得分:5)
您已将列类型指定为:
[Column(TypeName = "DateTime")]
这将映射到SQL Server中的Dateime
type列, and not Datetime2
。
DateTime
的有效范围为1753年1月1日至9999年12月31日,因此您的值11/11/1111
超出了范围。
错误消息包含datetime2
,这是由于提供的值11/11/1111
,它将落在datetime2
范围内。
答案 1 :(得分:2)
MSSQL的DateTime
数据类型范围为January 1, 1753, through December 31, 9999
http://msdn.microsoft.com/en-us/library/ms187819.aspx
说明使用datetime2
的错误消息有点误导,但最终问题是您尝试使用超出DateTime
数据类型范围的日期。