实体框架 - 如何检测可恢复与不可恢复的异常

时间:2011-12-07 09:03:30

标签: .net sql entity-framework error-handling

在我目前的项目中,我们正在使用Entity Framework,并在此上下文中存储来自远程系统的数据。当我尝试保存对象时,我需要可靠地判断异常是否可以从中恢复。

澄清一下,“从......中恢复”是指稍后再次尝试操作将是安全的并且可能会成功。这将包括网络连接,重新启动数据库服务器或类似情况的问题。

在此上下文中不可恢复基本上是其他任何内容,包括完整性约束和内部实体框架错误(数据库与EF模型不同步)。可以说,如果有人“修复”数据,可能会恢复某些完整性约束,但在这种情况下,只会有一个作者。

是否有可靠的方法将来自实体框架的异常分类为这两个类别中的一个?

2 个答案:

答案 0 :(得分:2)

我认为您必须提出自己愿意测试和处理的异常列表。您可以归类为可恢复的异常列表在任何两个环境中都不一定相同。也就是说,也许你可以从这里开始:

Where to find ADO.NET Entity Framework error list?

答案 1 :(得分:0)

检查以下文章 -

http://msdn.microsoft.com/en-us/library/bb738618.aspx

http://msdn.microsoft.com/en-us/library/bb336792.aspx

http://msdn.microsoft.com/en-us/library/system.data.optimisticconcurrencyexception.aspx

http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2008/07/02/10564.aspx

我确信不会从.SaveChanges()引发OptimisticConcurrencyException - 使用

try {
} catch(ExceptionType1) {
} catch(ExceptionType2) {
} catch(ExceptionType3) {
}

声明以捕捉不同的例外......