一,如何出现的该问题
使用EF core做模型渲染展示的时候,突然报错Unable to cast object of type 'System.DBNull' to type 'System.DateTime'.重字面上来看,就是类型转换错误。
二,解决方案
像这类问题理所当然的就去找了模型中对应的DateTime类型的属性。结果去数据库检查发现,该类型的都全部赋值,不应该报错呀。然后又仔细检查了一遍模型,还真发现端倪,因为EF core在加载模型的时候,如果使用的懒加载,他会把模型中关联的外键数据一起加载出来。然后就去检查外建关联的模型,结果还真发现问题。直接看图。

可以看出来,它模型对应的数据库中设置了可空类型,但是数据注释中确又是必填属性。
**解决方案:**删除必填属性的数据注释,或者给数据库中加入默认值。都可以解决该类型报错问题。
在使用EFcore进行模型渲染时遇到类型转换异常,报错'Unable to cast object of type 'System.DBNull' to type 'System.DateTime'。问题根源在于数据库中DateTime类型字段设置为可空,但模型注释为非空。解决方案是删除模型中的非空属性注释或为数据库字段添加默认值。
1万+

被折叠的 条评论
为什么被折叠?



