.net - 从 Db ValidationException 获取准确的错误类型

标签 .net entity-framework entity-framework-4.1 ef-code-first

我遇到过这样的情况:我在 EF 4.1 的 DatabaseInitializer() 中初始化我的模型,并收到此恼人的错误“一个或多个实体的验证失败。有关更多详细信息,请参阅“EntityValidationErrors”属性。” 因此,我转到这个 EntityValidationErrors ,有一个字段 {System.Data.Entity.Validation.DbEntityValidationResult} ,它没有给我任何有关它无法初始化的字段的信息。 有没有办法获取有关此错误的更多信息?

清除内容:

我知道如何解决字符串长度问题。我要问的是如何获得破坏模型的确切字段名称。

最佳答案

当您在 catch {...} block 中处于 Debug模式时,打开“QuickWatch”窗口 (ctrl+alt +q)并粘贴到那里:

((System.Data.Entity.Validation.DbEntityValidationException)ex).EntityValidationErrors

这将允许您深入了解 ValidationErrors 树。这是我发现的立即了解这些错误的最简单方法。

对于只关心第一个错误并且可能没有 catch block 的 Visual 2012+ 用户,您甚至可以这样做:

((System.Data.Entity.Validation.DbEntityValidationException)$exception).EntityValidationErrors.First().ValidationErrors.First().ErrorMessage

关于.net - 从 Db ValidationException 获取准确的错误类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5345890/

相关文章:

.NET:从Dictionary <K,V>生成字符串的有效方法?

.net - 窗口句柄被销毁时是否有事件

entity-framework - 首先使用抽象类进行代码,无法生成 fk

c# - EF 4.1 - 无法将一个实体与另一个现有实体相关联(可空 FK)

entity-framework - 在新保存的对象上(从保存它们的上下文中获取它们时),延迟加载不起作用

.net - Linq 到对象 : does GroupBy preserve order of elements?

.net - 解析百分比加倍

c# - 使用 Entity Framework 管理实体访问和权限

c# - EF Core DB 上下文跟踪生命周期和范围

c# - Entity Framework 中的排序列属性