update remove net mvc migrations migraciones framework asp c# asp.net-core entity-framework-core .net-core visual-studio-2015

c# - net - remove migration entity framework core



Cómo no aplicar una migración en ASP.NET Core con EF Core (13)

Cuando ejecuto PM> Remove-Migration -context BloggingContext en VS2015 con un proyecto ASP.NET Core con EF Core, obtengo 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.


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:

> remove-migration -force


1.Busque 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.


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

Update-Database -Migration {Name of Migration} -Context {context}

Otra forma de eliminar la última migración que ha aplicado según los docs es mediante el comando:

dotnet ef migrations remove

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:

C:/Projects/Application



Para "no aplicar" la migración más reciente (¿reciente?) Después de que ya se haya aplicado a la base de datos:

  1. Abra el Explorador de objetos de SQL Server (Ver -> "Explorador de objetos de SQL Server")
  2. Navegue a la base de datos que está vinculada a su proyecto expandiendo los triángulos pequeños a un lado.
  3. Expandir "Tablas"
  4. Busque la tabla llamada "dbo._EFMigrationsHistory".
  5. Haga clic derecho sobre él y seleccione "Ver datos" para ver las entradas de la tabla en Visual Studio.
  6. Elimine la fila correspondiente a su migración que no desea aplicar (diga "sí" a la advertencia, si se le solicita).
  7. Ejecute "dotnet ef migrations remove" nuevamente en la ventana de comandos en el directorio que tiene el archivo project.json. Alternativamente, ejecute el comando "Remove-Migration" en la consola del administrador de paquetes.

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!


Para eliminar por completo todas las migraciones y comenzar de nuevo, haga lo siguiente:

dotnet ef database update 0 dotnet ef migrations remove


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 que desea conservar sus cambios. La lista de nombres de la migración se puede encontrar usando:

lista de migraciones de dotnet ef


Para revertir la última migración aplicada, debe (comandos de la consola del administrador de paquetes):

  1. Revertir la migración de la base de datos: PM> Update-Database <prior-migration-name>
  2. Elimine el archivo de migración del proyecto (o se volverá a aplicar en el siguiente paso)
  3. Actualice la instantánea del modelo: PM> Remove-Migration

UPD : el segundo paso parece no ser necesario en las últimas versiones de Visual Studio (2017).


Simplemente puede orientar una migración por valor

Update-Database -Migration:0

Luego ve y quítalo

Remove-Migration


Todavía puede usar el comando Update-Database .

Update-Database -Migration <migration name> -Context <context name>

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 tabla __MigrationHistory en su base de datos y luego ejecutar el comando Remove-Migration nuevamente. También puede eliminar el archivo de migración y comenzar de nuevo.


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


Para no aplicar una migración específica (s) :

dotnet ef database update <previous-migration-name> or PM> Update-Database -Migration <previous-migration-name>

Para no aplicar todas las migraciones :

dotnet ef database update 0 or PM> Update-Database -Migration 0

Para eliminar la última migración:

dotnet ef migrations remove or PM> Remove-Migration

Para no aplicar y eliminar la última migración:

dotnet ef migrations remove --force or PM> Remove-Migration -Force


var context = serviceProvider.GetRequiredService<ApplicationDbContext>(); var userManager = serviceProvider.GetRequiredService<UserManager<ApplicationUser>>(); var roleManaget = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>(); await context.Database.EnsureDeletedAsync();