5

Un poco frustrado por aquí. Estoy tratando de encontrar una manera de admitir las actualizaciones en cascada con el marco de la entidad, y no parece haber una forma integrada. La investigación en la red básicamente muestra a todos diciendo que nunca se debe cambiar el valor de la clave primaria, pero hay casos válidos en los que sería necesario (por ejemplo, un valor UPC como clave principal, y los códigos de barras UPC ahora son más grandes, lo que significa actualizar el los existentes y manteniendo relaciones apropiadas de claves foráneas).Marco de la entidad y ACTUALIZAR CASCADA

Un enfoque es, aparentemente, acceder al evento SavingChanges, ver si los campos de la clave primaria están cambiando, y si es así, recorrer las propiedades de navegación y actualizar las tablas secundarias de esa manera.

Esto, en teoría, funcionaría. Pero suena engorroso. Alguien tiene una mejor idea? No puedo creer que Bill hubiera dejado estas cosas fuera del marco simplemente porque la mayoría de la gente no lo hace. SQL Server todavía lo admite ...

Thx!

+0

¿Quién es Bill ???? –

+0

La factura que inició MS ... –

+0

vea MSDN: http://msdn.microsoft.com/en-us/library/bb738695.aspx – RPM1984

Respuesta

2

No puede cambiar la clave principal directamente a través de EF. El problema es que EF hace cambios donde la clave primaria = x. Entonces no puedes cambiar x

Puede ejecutar un procedimiento almacenado de EF que actualice una clave principal.

En su caso con códigos de barras, tendría una clave principal que es un número de incremento automático, luego un código de barras como un campo diferente con un índice único.

+0

Thx. El código de barras fue un ejemplo, y puedo pensar en muchos escenarios (en sistemas existentes) donde el código de barras se hubiera convertido en la clave principal. Tenía perfecto sentido hasta que EF roled en la ciudad. Creo que la única manera por ahora será que las claves externas manejen las cascadas por su cuenta, aunque eso signifique que tendré que actualizar la entidad después de guardarla para asegurarme de tener los datos correctos en la memoria. –

Cuestiones relacionadas