处理 EntityCommandExecutionException 并显示错误消息

Handle EntityCommandExecutionException and show error message

当我在数据库中进行更改(添加、删除、重命名列)并且不更新我的 EF 映射时,我在调试模式下遇到异常

System.Data.Entity.Core.EntityCommandExecutionException

但我没有在全局 DispatcherUnhandledException 中看到此异常,即使我从发生异常的代码中捕获并抛出它也是如此。是什么原因?基本上,我想在我的应用程序加载时验证我的 EF 映射,如果映射中存在任何不匹配,我想向用户显示一条友好的消息,表明 客户端应用程序需要更新。

一个选项是创建一个命令拦截器。这个概念是在 Entity Framework 6.0 中引入的。

您通过实现 IDbCommandInterceptor 接口创建拦截器,然后通过代码或配置注册它。

http://www.tutorialspoint.com/entity_framework/entity_framework_command_interception.htm

http://www.entityframeworktutorial.net/entityframework6/database-command-interception.aspx

https://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/connection-resiliency-and-command-interception-with-the-entity-framework-in-an-asp-net-mvc-application