sql >> Base de Datos >  >> RDS >> Oracle

Entity Framework no puede actualizar los datos en la tabla con clave compuesta (Oracle)

Por favor incluya:

  • La definición de la entidad
  • La clase de mapeo/configuración del contexto
  • La definición de la tabla SQL

BackPropagateServerGen

Mirando el seguimiento de la pila, la clave que veo es BackPropagateServerGen .

Entity Framework está ejecutando su actualización en la base de datos, pero uno de sus valores clave compuestos (presumiblemente COPY_ID) en realidad está siendo alterado por la llamada UPDATE. Este valor generado por el servidor regresa de la llamada SQL, y Entity Framework luego se queja de que el valor clave se está cambiando.

Entonces, supongo que su valor de clave compuesta COPY_ID está definido como un identificador generado por el servidor, pero uno o ambos están sucediendo:

  • Está asignando una vista o un procedimiento almacenado que interfiere con lo que Entity Framework esperaría de una ACTUALIZACIÓN estándar
  • Tiene uno o más disparadores en la tabla, vista o procedimiento almacenado que interfiere con el resultado.

Si tiene algún disparador, desactívelo temporalmente para ver si el problema se detiene.

Si está asignando una vista o un procedimiento almacenado, intente asignar directamente a la tabla si es posible.

Utilice las herramientas de generación de perfiles que tenga para capturar qué código SQL está ejecutando.

Resumen

Creo que la llamada ACTUALIZAR en realidad está llegando a la base de datos, pero el resultado devuelto está cambiando los valores clave, lo que hace que Entity Framework falle y probablemente revierta la transacción ACTUALIZAR (según la versión de EF que esté usando).