EntityFramework中出现DateTime2异常的完美解决办法


今天在使用entityframework往数据库插入数据的时候,突然出现了一个数据类型转换异常的问题:

System.Data.SqlClient.SqlException: 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值.

查了一下网上的资料,很多人给了原因与解决办法:

C#中的DateTime类型比SqlServer中的datetime范围大。SqlServer的datetime有效范围是1753年1月1日到9999年12月31日,如果超出这个范围,EF就会把datetime转换为datetime2,但在数据库的映射类型还是datetime类型,所以才会出现异常,

网上解决办法:

1.将数据库中的时间字段改成datetime2

2.修改ef的数据库生成配置

3.传时间在数据库规定的范围内的时间参数

但是个人觉得这几种办法都不是十分妥当,个人解决办法:将model的时间类型设置为可空类型即可,例如 

public DateTime? CreatTime{get;set;}//或者 public Nullable<DateTime> CreateTime { get; set; }

此方法可完美解决插入时间类型转换报错异常

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM