Restablecer Migraciones de Entity-Framework


He arruinado mis migraciones, usé IgnoreChanges en la migración inicial, pero ahora quiero eliminar todas mis migraciones y comenzar con una migración inicial con toda la lógica.

Cuando elimino las migraciones en la carpeta y trato de Add-Migration no genera un archivo completo (está vacío, porque no he hecho ningún cambio desde mi última migración, pero ahora eliminada).

¿Hay algún comando Disable-Migrations, para que pueda volver a ejecutar Enable-Migrations?

Author: shA.t, 2012-07-27

10 answers

Necesitas:

  1. Eliminar el estado: Eliminar la carpeta de migraciones en su proyecto; Y
  2. Elimine la tabla __MigrationHistory en su base de datos (puede estar bajo tablas del sistema); Luego
  3. Ejecute el siguiente comando en la consola del Administrador de paquetes:

    Enable-Migrations -EnableAutomaticMigrations -Force
    

    Usar con o sin -EnableAutomaticMigrations

  4. Y finalmente, puedes ejecutar:

    Add-Migration Initial
    
 407
Author: Todd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-30 23:04:30

El problema: Ha estropeado sus migraciones y le gustaría restablecerlas sin eliminar sus tablas existentes.

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

Qué hacer:

  1. Elimina las migraciones existentes de la tabla Migrations_History.

  2. Elimine las migraciones existentes de la carpeta Migraciones.

  3. Ejecute add-migration Reset. Esta voluntad cree una migración en su carpeta de migración que incluya la creación de las tablas (pero no la ejecutará, por lo que no se producirá un error.)

  4. Ahora necesita 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 realizar, ya que las tablas ya existen en su base de datos. Así que entra en la migración y comenta todo el código dentro de la" método.

  5. Ahora ejecute update-database. Aplicará la migración (sin cambiar realmente la base de datos) y creará una fila de instantáneas en MigrationHistory.

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

 132
Author: Greg0,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-28 18:07:29

¿Qué tal

Update-Database –TargetMigration: $InitialDatabase

En La Consola Del Administrador De Paquetes? Debe restablecer todas las actualizaciones a su estado muy temprano.

Enlace de referencia: Primeras migraciones de código: Migrar a una Versión Específica (Incluida la Degradación)

 26
Author: Chris Voon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-03 16:39:17

Para arreglar esto, necesitas:

  1. Eliminar todo*.archivos CS en la carpeta Migraciones.

  2. Eliminar la tabla _MigrationHistory en la base de datos

  3. Corre Enable-Migrations -EnableAutomaticMigrations -Force

  4. Corre Add-Migration Reset

Luego, en la clase public partial class Reset : DbMigration, debe comentar todas las tablas existentes y actuales:

public override void Up()
{
// CreateTable(
// "dbo.<EXISTING TABLE NAME IN DATABASE>
// ...
// }
...
}

Si te pierdes esta parte todo fallará y tienes que empezar de nuevo!

  1. Ahora Ejecutar Update-Database -verbose

Esto debería tener éxito si ha hecho lo anterior correctamente, y ahora puede continuar con normalidad.

 13
Author: Rusty Nail,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-14 09:12: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 colocándolo de nuevo (después de hacer una copia de seguridad), luego eliminé la carpeta Migraciones haciendo clic con el botón derecho en el Explorador de soluciones y eligiendo Eliminar en el menú emergente.

 2
Author: user1738579,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-24 13:39:01

En EntityFramework 6 por favor intente:

Add-Migration Initial

Para actualizar el archivo de migración inicial.

 2
Author: Asaf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-21 11:17:55

En EF6

  1. Eliminar todos los archivos en la carpeta 'migraciones'... Pero no el 'create inicial' o 'config'.
  2. Elimine la base de datos.
  3. Ahora ejecuta Add-Migration Initial.
  4. Ahora puedes 'update-database' y todo estará bien.
 1
Author: adudley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-30 14:55:03

En Entity Framework Core.

  1. Elimine todos los archivos de la carpeta migraciones.
  2. Escriba en la consola

Dotnet ef database drop-f-v

Dotnet ef migraciones añadir inicial

Actualización de la base de datos Dotnet ef

 0
Author: Восилей,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-05 08:34:55

Considerando que esto todavía aparece cuando buscamos EF en.NET Core, publicaré mi respuesta aquí (Ya que me ha perseguido mucho). Tenga en cuenta que hay algunas sutilezas con la versión EF 6. NET (Sin comando inicial, y tendrá que eliminar los archivos "Snapshot")

(Probado en. NET Core 2.1)

Aquí están los pasos:

  1. Suprímase el cuadro _efmigrationhistory.
  2. Busque toda su solución para archivos que contengan Snapshot en su nombre, como ApplicationDbContextSnapshot.cs, y suprímanse.
  3. Ejecutar Add-Migration InitialMigration

Tenga en cuenta: debe eliminar TODOS los archivos de Instantáneas. Pasé incontables horas borrando la base de datos... Esto generará una migración vacía si no lo hace.

También, en el #3 puedes nombrar tu migración como quieras.

Aquí hay algunos recursos adicionales: asp.net Migraciones de NÚCLEO generadas vacío

Restablecer Entity Framework 7 migraciones

 0
Author: Jose A,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-25 22:52:11
Enable-Migrations -EnableAutomaticMigrations -Force
 -2
Author: Debendra Dash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-13 09:50:28