Actualizar la base de datos después de los cambios del modelo - Entity Framework 7

asp.net-core-mvc asp.net-mvc c# entity-framework entity-framework-core

Pregunta

He creado una aplicación utilizando la última versión de ASP.NET5 MVC 6 Entity Framework 7 y configuro las migraciones usando

dnx . ef migration add Initial
dnx . ef migration apply

Esto funciona, pero cuando realizo un cambio en el modelo, la base de datos no se actualiza. Me gustaría que la base de datos se actualice automáticamente después de un cambio de modelo cuando ejecuto el programa.

Mi investigación solo me apunta a información antigua que no parece ser apropiada para Entity Framework 7.

Mi código actual:

 public ApplicationDbContext(): base()
   {

        if (!_created)
        {

             Database.AsRelational().ApplyMigrations();
             _created = true;         
        }
  }

¿Alguien me puede apuntar en la dirección correcta?

Creo que se usa para trabajar algo como esto:

Database.SetInitializer(new DropCreateDatabaseAlways<MyContext>());

Respuesta aceptada

Debe ejecutar manualmente las migraciones con EF7 desde la línea de comandos, o llamar a Database.Migrate desde el código, no hay nada automágico en EF7 (una decisión deliberada) y después de cambiar su modelo, cree una nueva migración


Respuesta popular

Parece haber cierta confusión entre la creación de migraciones y el proceso de actualización de la estructura de la base de datos.

En EF7, ya no puede generar automáticamente la migración (el delta entre la estructura de base de datos actual y las definiciones de la entidad). Eso TIENE que hacerse en la línea de comando usando el comando "migraciones agregar".

Sin embargo, la actualización de la estructura de la base de datos todavía se puede hacer a través del código. Eso se hace usando el método dbContext.Database.Migrate (). Puede conectar esto en su Inicio para que cuando se inicie la aplicación por primera vez se asegure de que su base de datos se haya actualizado con la versión actual de su aplicación.

Entonces su flujo de trabajo de desarrollo puede ser:

  1. modificar definiciones de entidades
  2. ejecutar el comando "migraciones agregar"
  3. lanza tu aplicación *

    • el número 3 anterior asume que ha conectado la llamada Migrate () mencionada anteriormente en su Inicio. De lo contrario, también tiene que ejecutar el comando "actualización de la base de datos" manualmente.


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué