实体框架中的并发异常

Fla*_*air 21 c# entity-framework optimistic-concurrency entity-framework-6

拨打电话时SaveChanges/ SaveChangesAsync在实体框架(CF,C#),如果发生冲突的改变(例如,值一直上次读取啄更新),那么这两个异常DbUpdateConcurrencyExceptionOptimisticConcurrencyException应我赶上?

它们之间有什么区别?

Ger*_*old 16

DbUpdateConcurrencyException抛出的是一个特定的异常DbContext,所以这是要捕获的异常.此异常可能是由底层引起的OptimisticConcurrencyException,但如果是这样,则此异常将作为内部异常包装.

并非所有更新异常都是由并发引起的,因此您也必须在捕获DbUpdateException 捕获DbUpdateConcurrencyException(因为后者是子类型DbUpdateException).

另请参见Entity framework 5.0处理乐观并发异常?.