Cargando...

Introducción a Entity Framework Core en C#

Aprende los fundamentos de Entity Framework Core en C#, incluyendo DbContext y operaciones básicas con bases de datos.

Entity Framework Core (EF Core) es un mapeador objeto–relacional (ORM) dentro del ecosistema .NET, que permite realizar operaciones de base de datos con un enfoque orientado a objetos. Con EF Core, las tablas de la base de datos pueden gestionarse a través de clases C# sin necesidad de escribir consultas SQL directas. En este artículo veremos los conceptos básicos de EF Core: DbContext, definición de entidades y operaciones CRUD básicas. (No entraremos en detalles específicos de MS-SQL, solo en el enfoque general de EF Core).


Ventajas de EF Core


Definir una Entidad

En EF Core, una tabla de base de datos suele representarse con una clase de C#. Las propiedades de la clase se asignan a las columnas de la tabla.


public class Product
{
    public int Id { get; set; }      // Clave primaria
    public string Name { get; set; } = string.Empty;
    public decimal Price { get; set; }
}

La clase DbContext

DbContext es el núcleo de EF Core. Administra la conexión con la base de datos y las operaciones con las tablas.


using Microsoft.EntityFrameworkCore;

public class AppDbContext : DbContext
{
    public DbSet<Product> Products { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // Configurar aquí el proveedor de base de datos
        optionsBuilder.UseInMemoryDatabase("TestDb");
    }
}

Nota: En este ejemplo se usa InMemoryDatabase para mayor simplicidad.


Operaciones CRUD básicas

Con EF Core, las operaciones Create, Read, Update, Delete se realizan de manera sencilla.


using (var db = new AppDbContext())
{
    // CREATE
    db.Products.Add(new Product { Name = "Portátil", Price = 1500 });
    db.SaveChanges();

    // READ
    var products = db.Products.ToList();
    foreach (var p in products)
        Console.WriteLine($"{p.Id} - {p.Name} - {p.Price}");

    // UPDATE
    var product = db.Products.First();
    product.Price = 1400;
    db.SaveChanges();

    // DELETE
    db.Products.Remove(product);
    db.SaveChanges();
}

Consultas con LINQ

EF Core se integra perfectamente con LINQ (Language Integrated Query). Esto permite escribir consultas potentes y con seguridad de tipos sin necesidad de SQL directo.


// Seleccionar productos más caros que 1000
using (var db = new AppDbContext())
{
    var caros = db.Products
                  .Where(p => p.Price > 1000)
                  .OrderBy(p => p.Name);

    foreach (var item in caros)
        Console.WriteLine(item.Name);
}

El concepto de Migraciones

EF Core ofrece Migraciones para crear o actualizar el esquema de la base de datos directamente desde el código. Los cambios en el código se registran y aplican a la base mediante migraciones.


// Ejemplos de comandos (ejecutar desde la CLI)
// dotnet ef migrations add InitialCreate
// dotnet ef database update

Resumen (TL;DR)

  • EF Core simplifica las operaciones de base de datos gracias al enfoque ORM.
  • DbContext: administra la conexión con la base de datos y las tablas.
  • Entity: clases C# que representan tablas.
  • CRUD (Crear, Leer, Actualizar, Eliminar) es muy sencillo.
  • LINQ permite escribir consultas con seguridad de tipos.
  • Migraciones permiten gestionar el esquema de la base directamente desde el código.

Artículos relacionados