Migraciones de bases de datos en C# (.NET): Entity Framework Migrations

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Migraciones de bases de datos en C# (.NET) con Entity Framework



Al desarrollar aplicaciones en C# (.NET), una de las tareas clave es sincronizar el modelo de datos (clases de C#) con el esquema de la base de datos. Modificar manualmente tablas, columnas y relaciones es un proceso laborioso y propenso a errores. La solución a este problema son las migraciones de bases de datos, un mecanismo integrado de Entity Framework (EF) Core o Entity Framework 6. Las migraciones permiten aplicar automáticamente cambios a la estructura de la BD basándose en cambios en el código, conservando al mismo tiempo los datos existentes.



¿Qué son las migraciones y por qué son necesarias?



Una migración es un conjunto de instrucciones (código en C#) que describen cómo cambiar el esquema de la base de datos de una versión a otra. En lugar de escribir scripts SQL manualmente, el desarrollador modifica los modelos de C# (por ejemplo, agrega una nueva propiedad a una clase) y EF genera un archivo de migración. Luego, este archivo se aplica a la base de datos.



  • Automatización: Elimina la escritura manual de SQL.
  • Versionado: Cada migración es un archivo independiente con una marca de tiempo, lo que permite revertir los cambios.
  • Seguridad de datos: Al agregar una columna, EF no elimina las filas existentes (a menos que se especifique lo contrario).
  • Trabajo en equipo: Todos los miembros del equipo aplican las mismas migraciones, lo que evita divergencias en el esquema.


Preparación del proyecto



Para trabajar con migraciones, es necesario tener instalado el paquete Microsoft.EntityFrameworkCore.Tools (para EF Core) o EntityFramework (para EF6). Instalación a través de NuGet:



// Para EF Core (a través de Package Manager Console)Install-Package Microsoft.EntityFrameworkCore.Tools

// O a través de .NET CLIdotnet add package Microsoft.EntityFrameworkCore.Tools


También se necesita un contexto de base de datos que herede de DbContext. Ejemplo de un modelo simple:



public class Blog{    public int Id { get; set; }    public string Title { get; set; }    public string Content { get; set; }}

public class AppDbContext : DbContext{ public DbSet<Blog> Blogs { get; set; }

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("Server=(localdb)\\\\mssqllocaldb;Database=MyBlogDb;Trusted_Connection=True;"); }}


Creación de la primera migración



Abra Package Manager Console (en Visual Studio: View -> Other Windows -> Package Manager Console) o use .NET CLI. Ejecute el comando:



// A través de PMCAdd-Migration InitialCreate

// O a través de CLIdotnet ef migrations add InitialCreate


Después de la ejecución, aparecerá en el proyecto una carpeta Migrations con dos archivos:

  • XXXXXXXXXXXXXX_InitialCreate.cs — clase de migración con los métodos Up() (qué cambiar) y Down() (cómo revertir).
  • AppDbContextModelSnapshot.cs — una instantánea del modelo actual.


Aplicación de la migración a la base de datos



Para crear o actualizar la BD a la última versión, ejecute:



// A través de PMCUpdate-Database

// A través de CLIdotnet ef database update


EF ejecutará todas las migraciones no aplicadas en orden. Si la base de datos no existe, se creará automáticamente.



Agregar un nuevo campo y crear una migración



Supongamos que decidimos agregar a la propiedad Blog la propiedad CreatedAt:



public class Blog{    public int Id { get; set; }    public string Title { get; set; }    public string Content { get; set; }    public DateTime CreatedAt { get; set; } // nuevo campo}


Ahora creamos una nueva migración:



Add-Migration                    

Recommendations