Cuando ejecuto PM> Remove-Migration -context BloggingContextVS2015 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.

-forceal 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 MyInitialMigrationLuego 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 BloggingContextque usé eso funcionó con éxito. Luego corrídotnet ef migrations remove --context BloggingContextque 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 0para revertir (no aplicar) todas las migraciones de la base de datos. Entonces deberías poder correrdotnet ef migrations remove.dotnet ef migrations removedespué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 removeposterior 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-Databasecomando.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
__MigrationHistorytabla en su base de datos y luego ejecutar elRemove-Migrationcomando nuevamente. También puede eliminar el archivo de migración y comenzar de nuevo.fuente
Update-Databasedesde Package Management Console odotnet ef database updatedesde 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
Migrationscarpeta.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
migrationsy sus*.designer.csarchivos, ya que necesitamos mantener el archivo de instantánea en el estado consistente. Necesitamos eliminar las migraciones una por una (verTo remove last migrationarriba).Para no aplicar y eliminar la última migración:
fuente
unapplytodas estas publicaciones. Simplemente meun - applyPara revertir la última migración aplicada, debe (comandos de la consola del administrador de paquetes):
PM> Update-Database <prior-migration-name>PM> Remove-MigrationUPD : el segundo paso parece no ser necesario en las últimas versiones de Visual Studio (2017).
fuente
Remove-Migrationsin 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_ToPuede 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-Migrationtantas 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