entity framework - crear - Restablecer las migraciones de Entity-Framework
update database (10)
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 borro las migraciones en la carpeta e intento y Add-Migration
no genera un archivo completo (está vacío, porque no he realizado ningún cambio desde mi última migración, pero ahora la he eliminado).
¿Hay algún comando Disable-Migrations , por lo que puedo volver a ejecutar Enable-Migrations
?
El problema: ha arruinado sus migraciones y le gustaría restablecerlo sin eliminar sus tablas existentes.
El problema: no puede restablecer las migraciones con tablas existentes en la base de datos, ya que EF desea crear las tablas desde cero.
Qué hacer:
Eliminar las migraciones existentes de la tabla Migrations_History.
Eliminar las migraciones existentes de la carpeta Migraciones.
Ejecutar add-migration Reset. Esto creará una migración en su carpeta Migración que incluye la creación de las tablas (pero no la ejecutará, por lo que no generará errores).
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 vaya a la migración y comente todo el código dentro del método "Up".
Ahora ejecuta la base de datos de actualización. Aplicará la migración (aunque no cambie 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.
En EF6
- Elimine todos sus archivos en la carpeta ''migraciones'' ... Pero no la ''creación inicial'' o ''configuración''.
- Eliminar la base de datos.
- Ahora ejecute
Add-Migration Initial
. - Ahora puedes actualizar la base de datos y todo estará bien.
En Entity Framework Core.
- Eliminar todos los archivos de la carpeta de migraciones.
- Escriba en la consola
dotnet ef base de datos drop -f -v
dotnet ef migraciones agregar inicial
dotnet ef actualización de la base de datos
En EntityFramework 6 intente:
Add-Migration Initial
con el fin de actualizar el archivo de migración inicial.
Mi problema resultó ser que eliminé manualmente la carpeta Migraciones. Hice eso porque quería hacer una copia de seguridad de los contenidos, así que simplemente arrastré la carpeta fuera del proyecto. Más tarde solucioné el problema volviéndolo a colocar (después de hacer una copia de seguridad), luego eliminando la carpeta Migraciones haciendo clic derecho en el Explorador de soluciones y seleccionando Eliminar en el menú emergente.
Necesitas :
- Eliminar el estado: eliminar la carpeta de migraciones en su proyecto; Y
- Elimine la tabla
__MigrationHistory
en su base de datos (puede estar en las tablas del sistema); Entonces Ejecute el siguiente comando en la Consola del Administrador de paquetes:
Enable-Migrations -EnableAutomaticMigrations -Force
Usar con o sin
-EnableAutomaticMigrations
Y finalmente, puedes correr:
Add-Migration Initial
Para arreglar esto, necesitas:
Elimine todos los archivos * .cs en la carpeta Migraciones.
Elimine la _MigrationHistory Table en la base de datos
Ejecute
Enable-Migrations -EnableAutomaticMigrations -Force
Ejecutar
Add-Migration Reset
Luego, en la public partial class Reset : DbMigration
class, debes comentar todas las tablas existentes y actuales:
public override void Up()
{
// CreateTable(
// "dbo.<EXISTING TABLE NAME IN DATABASE>
// ...
// }
...
}
Si pierdes este bit, todo fallará y debes comenzar de nuevo.
- Ahora ejecute
Update-Database -verbose
Esto debería ser exitoso si ha hecho lo anterior correctamente, y ahora puede continuar con normalidad.
Qué tal si
Update-Database –TargetMigration: $InitialDatabase
en la consola del administrador de paquetes? Debería restablecer todas las actualizaciones a su estado muy temprano.
Enlace de referencia: Migraciones de Code First - Migración a una versión específica (incluida la degradación)
Teniendo en cuenta 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 (no hay un comando inicial y tendrá que eliminar los archivos de "Instantáneas")
(Probado en .NET Core 2.1)
Aquí están los pasos:
- Eliminar la tabla
_efmigrationhistory
. - Busque toda la solución para los archivos que contienen Instantáneas en su nombre, como
ApplicationDbContextSnapshot.cs
, y elimínelos . - Ejecutar
Add-Migration InitialMigration
Tenga en cuenta: debe eliminar TODOS los archivos de instantáneas . Pasé incontables horas simplemente borrando la base de datos ... Esto generará una migración vacía si no lo haces.
Además, en el # 3 puedes nombrar tu migración como quieras.
Aquí hay algunos recursos adicionales: asp.net CORE Migraciones generadas vacías
Enable-Migrations -EnableAutomaticMigrations -Force