He estado utilizando Entity Framework 4.3 en una base de datos existente y tengo un par de escenarios que estoy tratando de atender.La mejor forma de generar datos de forma incremental en Entity Framework 4.3
En primer lugar, si elimino mi base de datos, me gustaría que EF la recreara desde cero: he utilizado con éxito un inicializador de base de datos CreateDatabaseIfNotExists para esto.
En segundo lugar, si actualizo mi modelo y la base de datos ya existe, me gustaría que la base de datos se actualice automáticamente. Para esto he utilizado satisfactoriamente Migraciones de Entity Framework 4.3.
Así que esta es mi pregunta. Digamos que agrego una nueva tabla a mi modelo que requiere algunos datos de referencia, ¿cuál es la mejor manera de garantizar que estos datos se creen tanto cuando se ejecuta el inicio de la base de datos como cuando se ejecuta la migración? Mi deseo es que los datos se creen cuando estoy creando el archivo desde cero y también cuando la base de datos se actualice como resultado de una migración en ejecución.
En algunos ejemplos de migraciones EF he visto personas usar la función SQL() en el método UP de la migración para crear datos iniciales, pero si es posible preferiría usar el contexto para crear los datos iniciales (como se ve en la mayoría ejemplos de inicialización de base de datos) ya que me parece extraño que utilice sql puro cuando la idea completa de EF está abstrayendo eso. Intenté utilizar el contexto en el método UP pero, por alguna razón, no creía que existiera una tabla creada en la migración cuando intenté agregar los datos iniciales directamente debajo de la llamada para crear la tabla.
Cualquier sabiduría muy apreciada.
En realidad se puede crear un contexto en el método y utilizar AddOrUpdate para insertar filas. Sin embargo, esto no estará incluido en la transacción de migración, por lo que puede causar problemas. Además, no se garantiza la compilación en el futuro cuando el modelo cambie. – Betty
Intenté crear un contexto en el método Up, pero arrojó un error que decía que la tabla no existía. En su lugar, probaré SQL en el método "Arriba". –
@Ladislav su profundidad de conocimientos sobre EF sigue de sorprenderme, ¿ha considerado autor de un libro sobre el tema y tal vez hacer frente a malentendidos comunes se encuentra con esta lista? – kingdango