mysql 如何找到哪一列无法将DBLOG转换为String?

kb5ga3dv  于 2023-11-16  发布在  Mysql
关注(0)|答案(3)|浏览(115)

使用Entity Framework查询MySQL数据库,我的一个表给出了错误Unable to cast object of type 'System.DBNull' to type 'System.String'.我知道如果我能找出哪个列给我错误,我可以修复它,但我似乎找不到任何方法让EF给我给予列名。我检查了代码中的所有列,没有发现任何问题;数据库中的数据在必填字段中没有任何空白;我想出了如何在appsettings.json中将日志设置为Trace,但除了显示它发送到数据库的查询之外,我没有看到日志记录的信息有任何变化:它仍然只是显示Unable to cast object of 'System.DBNull' to type 'System.String'.
有什么办法可以让EF告诉我它在哪一栏有问题吗?我能想到的唯一下一步是关闭Just My Code,并希望深入了解源代码不会太混乱。

r7knjye2

r7knjye21#

你应该看看这个地方:https://learn.microsoft.com/en-us/ef/core/logging-events-diagnostics/
具体来说,我认为你可以找到这一点有用的:https://learn.microsoft.com/en-us/ef/core/logging-events-diagnostics/simple-logging#detailed-query-exceptions
请尝试打开详细查询异常日志记录以了解更多详细信息

7uhlpewt

7uhlpewt2#

在我完成修复启用可空引用类型检查时弹出的所有可空问题后,我打算尝试T. Nielsen的建议;但这意外地导致了一种替代方法,可以找到哪一列没有按我认为的方式设置:我在只包含必需字段的类上设置了一个构造函数,编译器告诉我Non-nullable property 'MyProblemColumn' must contain a non-null value when exiting constructor. Consider declaring the property as nullable.这正是我想找到它的原因.

rkue9o1l

rkue9o1l3#

我发现的最快的方法。要找到一个有这个异常的列,你需要用装饰器**[NotMapped]逐个标记模型中的string**(或者输入你需要的)类型字段,像这样:
第一个月
当错误消失时,这是异常行

相关问题