Cuando ejecuto PM> Remove-Migration -context BloggingContext
VS2015 con un proyecto ASP.NET Core con EF Core, aparece el siguiente error:
System.InvalidOperationException: The migration '20160703192724_MyFirstMigration' has already been applied to the database. Unapply it and try again. If the migration has been applied to other databases, consider reverting its changes using a new migration. at Microsoft.EntityFrameworkCore.Migrations.Design.MigrationsScaffolder.RemoveMigration(String projectDir, String rootNamespace, Boolean force)
at Microsoft.EntityFrameworkCore.Design.MigrationsOperations.RemoveMigration(String contextType, Boolean force)
at Microsoft.EntityFrameworkCore.Tools.Cli.MigrationsRemoveCommand.<>c__DisplayClass0_0.<Configure>b__0()
at Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args)
at Microsoft.EntityFrameworkCore.Tools.Cli.Program.Main(String[] args)
The migration '20160703192724_MyFirstMigration' has already been applied to the database. Unapply it and try again. If the migration has been applied to other databases, consider reverting its changes using a new migration.
¿Cómo puedo no aplicarlo? Estoy usando la última versión de ASP.NET Core 1.0, EF Core y VS2015 Update 3.
-force
al finalRespuestas:
Utilizar:
CLI
> dotnet ef database update <previous-migration-name>
Consola de administrador de paquetes
PM> Update-Database <previous-migration-name>
Ejemplo:
PM> Update-Database MyInitialMigration
Luego intente eliminar la última migración.
Eliminar la migración sin actualizar la base de datos no funciona porque aplicó cambios a la base de datos.
Si usa PMC, intente: PM> update-database 0 Esto borrará la base de datos y le permitirá eliminar la instantánea de migración de su solución
fuente
dotnet ef database update MyFirstMigration --context BloggingContext
que usé eso funcionó con éxito. Luego corrídotnet ef migrations remove --context BloggingContext
que me dio el mismo mensaje de error que en mi publicaciónMyFirstMigration
. Si esa es la primera migración (como su nombre lo indica), puede usardotnet ef database update 0
para revertir (no aplicar) todas las migraciones de la base de datos. Entonces deberías poder correrdotnet ef migrations remove
.dotnet ef migrations remove
después de estoPara eliminar por completo todas las migraciones y comenzar de nuevo, haga lo siguiente:
fuente
dotnet ef database update 0
, pero la ejecucióndotnet ef migrations remove
posterior eliminará la migración predeterminada para Identity, lo que podría no ser deseado.dotnet ef database update 0
! No había visto esto mencionado en ninguna parte ...The migration '20180618103514_InitialMigration' has already been applied to the database. Revert it and try again. If the migration has been applied to other databases, consider reverting its changes using a new migration.
Todavía puedes usar el
Update-Database
comando.Sin embargo, a juzgar por el nombre de su migración, supongo que es la primera migración, por lo que ese comando puede no funcionar. Debería poder eliminar la entrada de la
__MigrationHistory
tabla en su base de datos y luego ejecutar elRemove-Migration
comando nuevamente. También puede eliminar el archivo de migración y comenzar de nuevo.fuente
Update-Database
desde Package Management Console odotnet ef database update
desde el símbolo del sistema desde el directorio del proyecto.<migration name>
debe ser el nombre de la migración a la que desea regresar (es decir, probablemente la migración anterior a la que arruinó), no el nombre de la migración que desea deshacer.Para no aplicar una (s) migración (es) específica (s) :
Para no aplicar todas las migraciones :
Para eliminar la última migración:
Para eliminar todas las migraciones:
solo elimina la
Migrations
carpeta.Para eliminar las últimas migraciones (no todas):
No hay un comando para eliminar un montón de migraciones y no podemos simplemente eliminar estos pocos
migrations
y sus*.designer.cs
archivos, ya que necesitamos mantener el archivo de instantánea en el estado consistente. Necesitamos eliminar las migraciones una por una (verTo remove last migration
arriba).Para no aplicar y eliminar la última migración:
fuente
unapply
todas estas publicaciones. Simplemente meun - apply
Para revertir la última migración aplicada, debe (comandos de la consola del administrador de paquetes):
PM> Update-Database <prior-migration-name>
PM> Remove-Migration
UPD : el segundo paso parece no ser necesario en las últimas versiones de Visual Studio (2017).
fuente
Remove-Migration
sin problemas. ¡No estoy seguro de lo que dijiste "se volverá a aplicar en el próximo paso"!dbContext.Database.Migrate()
a tu startup.csSimplemente puede orientar una migración por valor
Luego, adelante y retíralo
fuente
Para "no aplicar" la migración más (¿reciente?) Después de que ya se haya aplicado a la base de datos:
Espero que esto ayude y sea aplicable a cualquier migración en el proyecto ... Probé esto solo con la migración más reciente ...
¡Feliz codificación!
fuente
En la consola de Package Manager:
Update-Database Your_Migration_You_Want_To_Revert_To
Puede ver más opciones y explicaciones sobre cómo revertir las migraciones aquí
fuente
Debe eliminar el registro de migración '20160703192724_MyFirstMigration' de la tabla '_EFMigrationsHistory' .
de lo contrario, este comando eliminará la migración y eliminará la carpeta de migraciones:
fuente
En general, si está utilizando la consola de Package Manager, la forma correcta de eliminar una migración específica es haciendo referencia al nombre de la migración
Otra forma de eliminar la última migración que ha aplicado según los documentos es mediante el comando:
Este comando debe ejecutarse desde el símbolo del sistema del desarrollador ( cómo abrir el símbolo del sistema ) dentro del directorio de la solución.
Por ejemplo, si su aplicación está dentro del nombre "Aplicación" y está en la carpeta c: \ Proyectos. Entonces tu camino debería ser:
fuente
Para no aplicar una migración en EF Core 1.0, use el comando:
actualización de la base de datos de dotnet ef {Migration_name}
Use el nombre de la migración hasta la cual desea conservar sus cambios. La lista de nombres de la migración se puede encontrar usando:
lista de migraciones de dotnet ef
fuente
Para revertir todas las migraciones que se aplican a DB simplemente ejecute:
Debe seguir ejecutándose
Remove-Migration
tantas veces como haya archivos de migración visibles en el directorio de Migración. El comando elimina la última migración y también actualiza la instantánea.fuente
Al principio ejecute el siguiente comando:
y luego ejecuta este:
Terminar
fuente
fuente
1.Encuentre la tabla "dbo._EFMigrationsHistory", luego elimine el registro de migración que desea eliminar. 2. ejecute "remove-migration" en PM (Package Manager Console). Funciona para mi.
fuente