排查 EF 保存数据时提示:Validation failed for one or more entities 的问题

前言

今天有一个使用 EF 的项目遇到了一个这样的异常问题:"Validation failed for one or more entities. See 'EntityValidationErrors' property for more details."

这个错误提示表明,在尝试将实体保存到数据库时,一个或多个实体的验证失败了。但是,错误消息本身并没有提供足够的详细信息来指出是哪个具体的属性或字段导致了验证失败,而且这个表的字段比较多不好一个一个的去排查具体是哪个字段的问题。这里分享一个比较实用的技巧,能够帮助我们快速定位数据验证错误问题。

排查方法

以下这段代码的目的是为了在使用 EF 进行数据库操作时,提供一个优雅的方式来捕获和处理验证失败的情况,同时提供详细的错误信息以帮助开发者快速定位问题。

  • EntityValidationErrors: 包含了所有验证失败的实体的错误信息。
  • ValidationErrors: 包含了验证失败的实体所有属性的验证错误(DbValidationError),例如必填字段未赋值、长度超限等。每个错误会明确标注 PropertyName(属性名)和 ErrorMessage(错误原因)。
csharp 复制代码
            try
            {
                // .....

                // 数据库操作(例如 SaveChanges())
            }
            catch (DbEntityValidationException ex)
            {
                foreach (var entityError in ex.EntityValidationErrors)
                {
                    Console.WriteLine($"实体名称: {entityError.Entry.Entity.GetType().Name}");
                    foreach (var validationError in entityError.ValidationErrors)
                    {
                        // 输出具体错误信息
                        Console.WriteLine($"属性名称: {validationError.PropertyName}");
                        Console.WriteLine($"错误原因: {validationError.ErrorMessage}");
                    }
                }
                throw; // 重新抛出异常或处理
            }
相关推荐
郑州光合科技余经理1 小时前
本地生活服务系统:模块边界与结算字段怎么拆
java·开发语言·前端·后端·系统架构·uni-app·php
IT_陈寒1 小时前
Vue的嵌套组件竟然吃掉了我的事件?
前端·人工智能·后端
大辉狼_音频架构2 小时前
进阶:从源码编译 SOF 固件与 topology
后端
大辉狼_音频架构2 小时前
上板:让 SOF 在 FRDM-i.MX8MP 上跑起来
后端
ChaITSimpleLove3 小时前
.NET 10 的 AI 技术栈全景:M.E.AI、MCP 与 Agent Framework 深度解析
人工智能·.net·ai agent·mcp·agent framework·m.e.ai·hosted agents
大辉狼_音频架构3 小时前
FRDM-IMX8MP UUU 烧录 eMMC 指南
后端
运行时异常4 小时前
【WMS 仓储系统集成 AI Agent 实战】第 3 讲:Spring Security 6 + JWT——addFilterBefore 一词之差,全站 401
java·后端
LinMINGJing0074 小时前
PageHeaderData:Page 的页面头
后端
2601_962069774 小时前
SpringBoot开发——初步了解SpringBoot
java·spring boot·后端
jay神4 小时前
【计算机毕业设计】基于Spring Boot的宠物领养管理系统
java·spring boot·后端·vue·毕业设计·宠物