Migración de datos de Entity Framework Core
La migración es una forma de mantener la arquitectura de la base de datos sincronizada con el modelo EF Core mediante la retención de datos.
Como se muestra en la figura anterior, la API EF Core crea un modelo EF Core a partir de clases de dominio (entidad), y la migración de EF Core creará o actualizará un esquema de base de datos basado en el modelo EF Core. Cada vez que cambia la clase de dominio, debe ejecutar una migración para mantener actualizado el esquema de la base de datos.
La migración de EF Core es un conjunto de comandos que puede ejecutar en la consola del administrador de paquetes NuGet o en la interfaz de línea de comandos (CLI) de dotnet.
La siguiente tabla enumera los comandos de migración importantes en EF Core.
Comandos de consola de Package Manager | comando de línea de comando dotnet | Como usar |
---|---|---|
add-migración <nombre de migración> | Añadir <nombre de migración> | Cree una migración agregando una instantánea de migración |
Eliminar-migración | Eliminar | Eliminar la última instantánea de migración |
Actualizar base de datos | Actualizar | Actualice el esquema de la base de datos en función de la última instantánea de migración |
Migración de guiones | Guión | Generar script SQL utilizando todas las instantáneas de migración |
Agregar migración
Por primera vez, definió la clase de dominio inicial. En este punto, su aplicación no tiene una base de datos para almacenar datos en su clase de dominio. Por lo tanto, primero, debe crear una migración.
Abra la consola del administrador de paquetes desde Herramientas-> NuGet Package Manager-> Package Manager Console en Visual Studio, y luego ejecute el siguiente comando para agregar la migración.
add-migration MyFirstMigration
Si está utilizando la interfaz de línea de comando dotnet, ejecute el siguiente comando.
dotnet ef migrations add MyFirstMigration
En el comando anterior, MyFirstMigration es el nombre de la migración. Esto creará tres archivos en la carpeta "Migración" del proyecto como se muestra a continuación.
- <timestamp> _ <nombre de migración> .cs: archivo de migración principal, que contiene las operaciones de migración en los métodos Up () y Down () El método Up () incluye código para crear objetos de base de datos, y el método Down () incluye código para eliminar objetos de base de datos.
- <Timestamp> _ <nombre de migración> .Designer.cs: archivo de metadatos de migración, que contiene información utilizada por EF Core.
- <contextclassname> ModelSnapshot.cs: instantánea del modelo actual. Esto se utiliza para determinar los cambios realizados al crear la próxima migración.
Ahora, después de crear la instantánea de migración, es hora de crear la base de datos.
Crear o actualizar una base de datos
Use los siguientes comandos para crear o actualizar el esquema de la base de datos.
- Consola de administrador de paquetes
Update-Database
- línea de comando dotnet
dotnet ef database update
El comando Actualizar creará una base de datos basada en el contexto y la clase de dominio y las instantáneas de migración, estas instantáneas se crean utilizando el comando add-migración o add.
Si esta es la primera migración, también se creará una tabla llamada __EFMigrationsHistory, que almacenará los nombres de todas las migraciones y cuándo se aplicarán a la base de datos.
Eliminar migración
Si la última migración no se aplicó a la base de datos, puede eliminarla. Use el siguiente comando de eliminación para eliminar el último archivo de migración creado y restaurar la instantánea del modelo.
- Consola de administrador de paquetes
remove-migration
- línea de comando dotnet
dotnet ef migrations remove
El comando anterior eliminará la última migración y restaurará la instantánea del modelo a la migración anterior. Tenga en cuenta que si la migración se ha aplicado a la base de datos, arrojará la siguiente excepción.
La migración <nombre de migración> se ha aplicado a la base de datos. Restaurarlo e intentarlo de nuevo. Si la migración se ha aplicado a otras bases de datos, considere usar la nueva migración para revertir sus cambios.
Restaurar migración
Suponga que cambia la clase de dominio y usa el comando add-migración para crear una segunda migración llamada MySecondMigration y usa el comando Actualizar para aplicar la migración a la base de datos. Sin embargo, por alguna razón, desea restaurar la base de datos a su estado anterior. En este caso, use el comando update-database <nombre de migración> para restaurar la base de datos a la instantánea de migración anterior especificada.
- Consola de administrador de paquetes
Update-database MyFirstMigration
- línea de comando dotnet
dotnet ef database update MyFirstMigration
El comando anterior restaurará la base de datos basada en la migración llamada MyFirstMigration y eliminará todos los cambios aplicados a la segunda migración llamada MySecondMigration. Esto también eliminará la entrada MySecondMigration de la tabla __EFMigrationsHistory en la base de datos.
Nota: Esto no eliminará los archivos de migración relacionados con MySecondMigration. Use el comando remove para eliminarlo del proyecto.
Generar script SQL
Use el siguiente comando para generar un script SQL para la base de datos.
- Consola de administrador de paquetes
script-migration
- línea de comando dotnet
dotnet ef migrations script
El comando de script anterior incluirá todos los scripts migrados por defecto. Puede usar las opciones -to y -from para especificar el alcance de la migración.
Desde el comando de consola del administrador de paquetes
Puede usar la consola del administrador de paquetes en Visual Studio para ejecutar los comandos de migración en Entity Framework Core. Abra la consola del administrador de paquetes desde Herramientas-> NuGet Package Manager-> Package Manager Console en Visual Studio para ejecutar los siguientes comandos.
Consola de administrador de paquetes | Uso |
---|---|
Marco de entidades de Get-Help | Obtenga ayuda de framework de entidad para mostrar información sobre los comandos de Entity Framework |
Add-Migration | <Nombre de migración> Crear migración agregando una instantánea de migración |
Eliminar-Migración | Eliminar la última instantánea de migración |
Actualizar base de datos | Actualice el esquema de la base de datos en función de la última instantánea de migración |
Script-Migration | Generar script SQL utilizando todas las instantáneas de migración |
Scaffold-DbContext | Genera DbContext y clases de tipo de entidad para la base de datos especificada. Esto se llama ingeniería inversa. |
Get-DbContext | Obtenga información sobre el tipo DbContext |
Drop-Database | Eliminar la base de datos |
Obtener ayuda
get-help entityframework
Add-Migration Añadir migración
get-help entityframework
Eliminar-Migración
get-help entityframework
Update-Database
get-help entityframework
Migración de guiones Migración de guiones
get-help entityframework
contexto de la base de datos del andamio scaffold-dbcontext
get-help entityframework
Get-DbContext
get-help entityframework
Drop-Database
get-help entityframework
Comandos de interfaz de línea de comando para migración
Use .NET Core Command List Interface para ejecutar los comandos básicos de Entity Framework. Para usar la CLI de .NET, agregue la <DotNetCliToolReference Include = "Microsoft.EntityFrameworkCore.Tools.DotNet" Version = "2.0.0" /> en el nodo <ItemGroup> editando el archivo .csproj del proyecto .NET Core
Abra un símbolo del sistema, luego navegue a la carpeta raíz del proyecto e ingrese dotnet ef --help para enumerar los comandos de EF Core, como se muestra a continuación.
[Falló la transferencia de la imagen de la cadena externa, el sitio de origen puede tener un mecanismo de cadena antirrobo, se recomienda guardar la imagen y cargarla directamente (img-cD0PztSl-1581165405066) (d: \ note \ efcore \ pic \ 31.png)]
Como puede ver arriba, hay tres comandos EF principales disponibles: base de datos, dbcontext y migración. La siguiente tabla enumera todos los comandos y subcomandos EF.
Comando | Subcomando | Uso |
---|---|---|
Base de datos | soltar | Eliminar la base de datos |
actualizar | Actualice la base de datos a la migración especificada | |
DbContext | informacion | Obtenga información sobre el tipo DbContext |
lista | Lista de tipos de DbContext disponibles | |
andamio | Proporcione DbContext y tipo de entidad para la base de datos | |
Migración | añadir | Agregar nueva migración |
lista | Lista de migraciones disponibles | |
eliminar | Eliminar la última migración | |
guión: | Generar script SQL a partir de la migración |
Veamos las opciones disponibles para cada comando.
Caída de la base de datos
dotnet ef database drop
Actualización de base de datos
dotnet ef database update
DbContext Info
dotnet ef dbcontext info
DbContext List
dotnet ef dbcontext list
Andamio DbContext
dotnet ef dbcontext scaffold
Añadir
dotnet ef migrations add
Lista
dotnet ef migrations list
Eliminar
dotnet ef migrations remove
Guión
dotnet ef migrations script