在实体框架(CF,C#)中调用SaveChanges
/ SaveChangesAsync
时,如果发生更改冲突(例如,自上次读取之后值已更新),那么这两个中的哪一个异常DbUpdateConcurrencyException
或OptimisticConcurrencyException
我能抓到吗?
它们之间有什么区别?
答案 0 :(得分:16)
DbUpdateConcurrencyException
是DbContext
抛出的特定异常,所以这是要捕获的异常。此异常可能是由基础OptimisticConcurrencyException
引起的,但如果是这样,则此异常将作为内部异常包装。
并非所有更新异常都是由并发引起的,因此您必须在捕获DbUpdateException
之后捕获DbUpdateConcurrencyException
(因为后者是DbUpdateException
的子类型)。
另见Entity framework 5.0 handle optimistic concurrency exception?。
答案 1 :(得分:1)
您将获得OptimisticConcurrencyException
。看看this。
现在出现差异。