.net core Unable to cast object of type ‘System.DBNull‘ to type ‘System.DateTime‘.解决方案

EFcore模型转换错误及解决方案
在使用EFcore进行模型渲染时遇到类型转换异常,报错'Unable to cast object of type 'System.DBNull' to type 'System.DateTime'。问题根源在于数据库中DateTime类型字段设置为可空,但模型注释为非空。解决方案是删除模型中的非空属性注释或为数据库字段添加默认值。

一,如何出现的该问题

使用EF core做模型渲染展示的时候,突然报错Unable to cast object of type 'System.DBNull' to type 'System.DateTime'.重字面上来看,就是类型转换错误。

二,解决方案

像这类问题理所当然的就去找了模型中对应的DateTime类型的属性。结果去数据库检查发现,该类型的都全部赋值,不应该报错呀。然后又仔细检查了一遍模型,还真发现端倪,因为EF core在加载模型的时候,如果使用的懒加载,他会把模型中关联的外键数据一起加载出来。然后就去检查外建关联的模型,结果还真发现问题。直接看图。
在这里插入图片描述
可以看出来,它模型对应的数据库中设置了可空类型,但是数据注释中确又是必填属性。

**解决方案:**删除必填属性的数据注释,或者给数据库中加入默认值。都可以解决该类型报错问题。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值