异常:
今天在用EF添加记录的时候报如下的错误:
System.Data.SqlClient.SqlException: 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值。
原因:
在C#中的DateTime类型比SqlServer中的datetime范围大。SqlServer的datetime有效范围是1753年1月1日到9999年12月31日,如果超出这个范围,EF就会把datetime转换为datetime2,而在数据库的映射类型还是datetime类型,从而出现该异常。
出错代码:
仔细查找发现原来有一个DateTime类型的字段没有初始化,它维持在默认的时间0001.1.1,所以该值不在SqlServer的datetime有效范围内。
解决方法:
给该DateTime类型字段赋初始值即可。