Pregunta

al llamar SaveChanges / SaveChangesAsync en Entity Framework (CF, C#), si se produce un conflicto de cambio (por ejemplo, los valores se han actualizado desde la última lectura), entonces ¿cuál de estas dos excepciones? DbUpdateConcurrencyException O OptimisticConcurrencyException ¿Lo atrapo?

¿Y cuál es la diferencia entre ellos?

¿Fue útil?

Solución

DbUpdateConcurrencyException es una excepción específica lanzada por DbContext, entonces este es el que hay que atrapar.Esta excepción puede ser causada por un subyacente OptimisticConcurrencyException, pero si es así, esta excepción se incluye como excepción interna.

No todas las excepciones de actualización son causadas por la concurrencia, por lo que también debes detectar DbUpdateException después atrapando DbUpdateConcurrencyException (porque este último es un subtipo de DbUpdateException).

Ver también ¿Entity Framework 5.0 maneja la excepción de concurrencia optimista?.

Otros consejos

obtendrás un OptimisticConcurrencyException.Eche un vistazo a este .

ahora viene a la difrida.

  • OptimisticConCurrenceException : arrojado cuando se produce una violación de la concurrencia optimista (supongamos que más de una peropia está cambiando al mismo resultado, y esto causará el problema de no ser sincronizado)
  • dbupdateconconturrenceException : la excepción emitida por DBContext cuando el comportamiento esperado es que los Sabechanges para una entidad resultaría en una actualización de la base de datos, pero de hecho, no se afectaron las filas en la base de datos.Esto demuestra que la base de datos se ha actualizado simultáneamente y se esperaba que un token de concurrencia que coincida en realidad no coincide.Las entradas estatales a las que se hace referencia en esta excepción no sean serializadas debido a la seguridad y el acceso a las entradas estatales después de la serialización, volverá nulo.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top