Entity Framework Core para C# (.NET): guía completa con ejemplos

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

Qué es Entity Framework Core y por qué es necesario

\n

Entity Framework Core (EF Core) es un mapeador objeto-relacional (ORM) moderno para la plataforma .NET, desarrollado por Microsoft. Permite a los desarrolladores trabajar con bases de datos utilizando objetos .NET y elimina la necesidad de escribir gran parte del código de acceso a datos.

\n\n

EF Core es una versión ligera, extensible y multiplataforma de Entity Framework. Soporta múltiples sistemas de gestión de bases de datos, incluyendo SQL Server, SQLite, PostgreSQL, MySQL, Oracle y otros.

\n\n

Principales capacidades de EF Core:

\n
    \n
  • Creación y actualización automática del esquema de la base de datos basado en el modelo (Code First)
  • \n
  • Ejecución de consultas a la base de datos mediante LINQ (Language Integrated Query)
  • \n
  • Seguimiento automático de cambios en los objetos y generación de comandos SQL para actualizar datos
  • \n
  • Soporte de migraciones para gestionar cambios en el esquema de la base de datos
  • \n
  • Soporte de relaciones entre entidades (uno a uno, uno a muchos, muchos a muchos)
  • \n
  • Carga diferida, explícita y ansiosa de datos relacionados
  • \n
\n\n

Instalación de Entity Framework Core

\n

La instalación de EF Core se realiza a través del Administrador de paquetes NuGet. A diferencia de Python, aquí se utiliza dotnet add package o el administrador de paquetes de Visual Studio.

\n\n

Instalación mediante .NET CLI:

\n
dotnet add package Microsoft.EntityFrameworkCore\ndotnet add package Microsoft.EntityFrameworkCore.SqlServer\ndotnet add package Microsoft.EntityFrameworkCore.Tools
\n\n

Instalación para PostgreSQL (Npgsql):

\n
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL
\n\n

Instalación para SQLite:

\n
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
\n\n

Instalación para MySQL:

\n
dotnet add package Pomelo.EntityFrameworkCore.MySql
\n\n

Inicio rápido con un ejemplo de código

\n

Creemos una aplicación de consola simple para trabajar con una base de datos de libros.

\n\n

1. Creamos el modelo de datos:

\n
public class Book\n{\n    public int Id { get; set; }\n    public string Title { get; set; }\n    public string Author { get; set; }\n    public int Year { get; set; }\n    public decimal Price { get; set; }\n}\n\npublic class Author\n{\n    public int Id { get; set; }\n    public string Name { get; set; }\n    public List<Book> Books { get; set; } = new();\n}
\n\n

2. Creamos el contexto de la base de datos:

\n
public class LibraryContext : DbContext\n{\n    public DbSet<Book> Books { get; set; }\n    public DbSet<Author> Authors { get; set; }\n\n    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n    {\n        optionsBuilder.UseSqlite("Data Source=library.db");\n    }\n}
\n\n

3. Usamos EF Core para trabajar con datos:

\n
using var context = new LibraryContext();\ncontext.Database.EnsureCreated(); // Creamos la BD si no existe\n\n// Agregar datos\nvar author = new Author { Name = "León Tolstói" };\nauthor.Books.Add(new Book { Title = "Guerra y paz", Year = 1869, Price = 1500m });\nauthor.Books.Add(new Book { Title = "Ana Karénina", Year = 1877, Price = 1200m });\n\ncontext.Authors.Add(author);\ncontext.SaveChanges();\n\n// Leer datos\nvar books = context.Books\n    .Where(b => b.Year > 1850)\n    .OrderBy(b => b.Year)\n    .ToList();\n\nforeach (var book in books)\n{\n    Console.WriteLine($"{book.Title} ({book.Year})");\n}
\n\n

Métodos y funciones principales de Entity Framework Core

\n\n

1. Add

\n

Descripción: Agrega una nueva entidad al contexto en estado Added. Al llamar a SaveChanges() se ejecutará un comando INSERT.

\n

Parámetros:

\n
    \n
  • object entity

Recommendations