【发布时间】:2013-10-01 05:33:47
【问题描述】:
我知道在使用实体框架DbContext 时可能会产生异常的两种不同情况:
- 枚举查询(可以抛出
EntityCommandExecutionException) - 调用
SaveChanges(可以抛出DbUpdateException)
在DbContext 的单个实例中,我想捕获这些异常,如果适用,尝试恢复,然后重复操作。
具体来说,如果对SaveChanges 的调用由于死锁而引发异常,我想重试对SaveChanges 的调用。我已经知道如何检测这种情况并执行重试。
我在这里看到this answer,表示死锁后不应该使用SQL连接。这表明我应该重新启动整个DbContext 和更高级别的操作以从此类异常中恢复。
我不确定在DbContext 引发此类异常后继续使用它是否安全。它会进入无法使用的状态吗?它仍然可以工作但不能正常工作吗? SaveChanges 将不再以事务形式出现吗?
【问题讨论】:
-
MSDN上有一个例子,这里修复数据后第二次调用SaveChangesmsdn.microsoft.com/en-us/library/bb896255.aspx
-
@Colin;谢谢,这是一个很好的观点。该示例与我的示例之间的区别在于我的示例基于数据库服务器引发的错误,而该示例基于 Entity Framework 为响应受影响的行数而生成的异常。
-
在我看来你会没事的。这告诉你事务在 EF5 和 6 中是如何工作的:msdn.com/data/dn456843 我建议你做一个单元测试
标签: entity-framework entity-framework-5