Me gustaría implementar soporte de generación de Id "predeterminado" para mis entidades.Asignación de identificadores a entidades con EntityFramework 4
Al guardar la entidad, me gustaría que EntityFramework solo genere el valor de id para la entidad si no está ya configurado. Si el ID ya tiene un valor no nulo, distinto de cero, quiero conservar ese ID de entidad cuando la entidad se guarde en la base de datos.
Estoy migrando datos de un modelo de datos heredado (modelo EntityFramework creado a partir de la base de datos anterior) a un modelo EntityFramework recién creado (primer modelo). Llamemos al viejo modelo A, y al nuevo modelo T.
Normalmente, quisiera que las entidades T tuvieran sus ID configurados al guardar (todos son int64), para el uso a largo plazo del nuevo modelo .
Actualmente, estoy asignando explícitamente Id. De entidades T en función del ID de la entidad A correspondiente desde la que estoy migrando. Esto es para que los resultados de la migración sean fáciles de verificar.
Sin embargo, aunque puedo asignar el ID de una entidad T al mismo ID que la entidad A en mi rutina de migración, después de guardar las entidades, los valores Id han cambiado.
¿Hay alguna manera de anular el método de guardado predeterminado para todas las entidades en el modelo T, por lo que el valor del id solo se asigna si no está establecido en la entidad antes de guardarse?
He examinado algunas de las otras preguntas de EntityFramework/Id aquí, pero a mi parecer ninguno de ellos me pregunta lo mismo.
Gracias por cualquier pista.
Gracias por la respuesta, Ed. ¿Quiere decir "forzar que NO se establezca la identidad" en la base de datos? Si es así, el modelo de generación se puede establecer en el atributo para que la entidad ya deshabilite completamente la generación de ID en la base de datos. Lo que estoy buscando es algo que asignará la identidad automáticamente en la base de datos si aún no está asignada. IOW, una asignación condicional o predeterminada. –
El código anterior obligará a la tecla a no establecerse. Parece que no es lo que estás buscando.No sé nada de lo que EF puede hacer para ayudarte. –
Gracias de nuevo por su respuesta, Ed. Creo que tal vez podría utilizar esta técnica para el escenario en el que tengo que realizar la migración de datos y asignar explícitamente las claves colocando la clase parcial en el código de migración, y luego permitir que EF genere la clave en la nueva aplicación de producción. Voy a votar mejor su respuesta, pero no la seleccionaré como * la * porque todavía me gustaría obtener el comportamiento descrito en mi pregunta. –