在 EF Core 中使用什么来代替 DbEntityValidationException?

g.p*_*dou 14 c# entity-framework entity-framework-6 entity-framework-core .net-core

对于 EF,我使用了 DbEntityValidationException catch 分支(以及其他分支)

catch (DbEntityValidationException exception)
{
    // any statements here...
    throw;
}
Run Code Online (Sandbox Code Playgroud)

现在将 .NET Core 3.17 与 EF Core 3.17 一起使用,显然没有 DbEntityValidationException,并且还审查了 EF Core 3.17 源,并且没有该异常类型的痕迹。(注意,我不仅谈论它的定义位置,我的意思是它没有被抛出到 EF Core 3.17 源代码中的任何位置)

问题

如何将上面的代码迁移到EF Core 3.17?

Dan*_*ter 0

当您查看DbEntityValidationException 的文档时,您可以看到它适用的版本只有:4.3.1、5.0.0、6.2.0。

现在,如果您查看SaveChanges的文档(假设这就是您在 try 块中调用的内容,您可以看到它现在只抛出 DpUpdateException 和 DbUpdateConcurrencyException。所以我认为您可能想要的是下面的内容,因为这应该捕获任何保存到数据库时出现异常。我认为验证将包含在其中。

catch (catch (DbUpdateException exception)
{
    // any statements here...
    throw;
}exception)
{
    // any statements here...
    throw;
}
Run Code Online (Sandbox Code Playgroud)