当在实体框架(CF、C#)中调用SaveChanges/SaveChangesAsync时,如果发生更改冲突(例如,自上次读取之后值已更新),那么我应该捕获这两个DbUpdateConcurrencyException异常中的哪一个?OptimisticConcurrencyException
它们之间有什么区别?
当在实体框架(CF、C#)中调用SaveChanges/SaveChangesAsync时,如果发生更改冲突(例如,自上次读取之后值已更新),那么我应该捕获这两个DbUpdateConcurrencyException异常中的哪一个?OptimisticConcurrencyException
它们之间有什么区别?
DbUpdateConcurrencyException是由 抛出的特定异常DbContext,因此这是要捕获的异常。此异常可能是由底层引起的OptimisticConcurrencyException,但如果是这样,则将此异常包装为内部异常。
并不是所有的更新异常都是并发引起的,所以你也得先抓DbUpdateException 后抓DbUpdateConcurrencyException(因为后者是 的子类型DbUpdateException)。
另请参阅实体框架 5.0 处理乐观并发异常?.
你会得到一个OptimisticConcurrencyException. 看看这个。
现在来看看差异。