从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值

在.net core项目中,使用EF core 做数据持久化,做新增的时候,遇到一个事件类型问题的错误。报错 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值

实体属性的类型是datetime 数据库类型也是datetime 怎么就出现个datetime2类型呢?

原因:sqlserver 事件范围1753 年 1 月 1 日到 9999 年 12 月 31 日。在使用ef新增时没有被复制,就被默认[0001/xxxx]的一个默认时间,这时候这个时间就不再这个范围,所以EF就默认转换成datetime2类型,所以insert到数据库时就出现这个错,因为你数据类型时datatime 型。

解决办法:

1.数据库类型更改datetime2类型

2.实体设置可空类型,数据库字段类型可为空。

后面需要测试,如果实体datetime 类型有值,数据库datetime类型,ef会不会把datetime转datetime2类型(datetime2比datetime时间更精确)?后面遇到这样的在记录!

原文地址:https://www.cnblogs.com/JellyM/p/15265592.html