291 votos

Restablecer las migraciones de entidades-marco

He estropeado mis migraciones, he utilizado IgnoreChanges en la migración inicial, pero ahora quiero borrar todas mis migraciones y empezar con una migración inicial con toda la lógica.

Cuando borro las migraciones de la carpeta e intento añadir una migración, no se genera un archivo completo (está vacío, porque no he hecho ningún cambio desde la última migración, ya borrada).

¿Existe un comando Disable-Migrations para poder volver a ejecutar Enable-Migrations?

436voto

Todd Puntos 2386

Tienes que borrar el estado:

  1. Elimine la carpeta de migraciones en su proyecto
  2. Elimine la tabla __MigrationHistory en su base de datos (puede estar en las tablas del sistema)

A continuación, ejecute el siguiente comando en la consola del gestor de paquetes:

Enable-Migrations -EnableAutomaticMigrations -Force

Utilizar con o sin -EnableAutomaticMigrations

Y finalmente, puedes correr:

Add-Migration Initial

143voto

Greg Gum Puntos 1441

El tema: Has estropeado tus migraciones y te gustaría restablecerlas sin borrar las tablas existentes.

El problema: No se pueden restablecer las migraciones con tablas existentes en la base de datos ya que EF quiere crear las tablas desde cero.

Qué hacer:

  1. Eliminar las migraciones existentes de la tabla Migrations_History.

  2. Eliminar las migraciones existentes de la carpeta de migraciones.

  3. Ejecutar add-migration Reset. Esto creará una migración en su carpeta de Migración que incluye la creación de las tablas (pero no la ejecutará para que no dé error).

  4. Ahora debe crear la fila inicial en la tabla MigrationHistory para que EF tenga una instantánea del estado actual. EF hará esto si aplica una migración. Sin embargo, no puede aplicar la migración que acaba de hacer, ya que las tablas ya existen en su base de datos. Así que vaya a la Migración y comente todo el código dentro del método "Up".

  5. Ahora ejecute update-database. Aplicará la Migración (aunque no cambiará la base de datos) y creará una fila instantánea en MigrationHistory.

Ahora ha restablecido sus migraciones y puede continuar con las migraciones normales.

29voto

imkheong Puntos 641

¿Qué tal si

Update-Database –TargetMigration: $InitialDatabase

en la consola del gestor de paquetes? Debería restablecer todas las actualizaciones a su estado inicial.

Enlace de referencia: Migraciones de Code First - Migración a una versión específica (incluido el downgrade)

2voto

user1738579 Puntos 41

Mi problema resultó ser que eliminé manualmente la carpeta Migrations. Lo hice porque quería hacer una copia de seguridad del contenido, así que simplemente arrastré la carpeta fuera del proyecto. Más tarde solucioné el problema volviéndola a colocar (después de hacer una copia de seguridad), y luego eliminando la carpeta Migraciones haciendo clic con el botón derecho del ratón en el Explorador de Soluciones y eligiendo Eliminar en el menú emergente.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X