ORM para C# (.NET): comparación y ejemplos
En el desarrollo moderno en la plataforma .NET, el trabajo con bases de datos rara vez prescinde del uso de Object-Relational Mapping (ORM). Las bibliotecas ORM permiten a los desarrolladores interactuar con bases de datos relacionales a través de código orientado a objetos, evitando la necesidad de escribir consultas SQL complejas manualmente. En este artículo compararemos los tres ORM más populares para C#: Entity Framework Core, Dapper y LINQ to SQL, y también proporcionaremos ejemplos prácticos de uso.
1. Entity Framework Core (EF Core)
EF Core es un ORM moderno y multiplataforma de Microsoft, que es la evolución de Entity Framework 6. Soporta el trabajo con varios SGBD (SQL Server, PostgreSQL, SQLite, MySQL, etc.) y proporciona potentes capacidades para trabajar con datos.
Características principales:
- Code First / Database First — se puede crear la base de datos basándose en el código o viceversa.
- Consultas LINQ — las consultas se escriben en C# y EF Core las convierte a SQL.
- Migraciones — gestión automática del esquema de la base de datos.
- Carga diferida (Lazy Loading) — carga automática de datos relacionados.
Ejemplo de código (Code First):
using Microsoft.EntityFrameworkCore;using System.Collections.Generic;
public class User{ public int Id { get; set; } public string Name { get; set; } public string Email { get; set; }}
public class AppDbContext : DbContext{ public DbSet<User> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("Server=.;Database=MyDb;Trusted_Connection=True;"); }}
// Usousing (var db = new AppDbContext()){ // Agregar usuario var user = new User { Name = "Iván", Email = "ivan@example.com" }; db.Users.Add(user); db.SaveChanges();
// Consulta mediante LINQ var users = db.Users.Where(u => u.Name.Contains("Iván")).ToList();}Ventajas: Alto rendimiento, funcionalidad rica, soporte de migraciones, comunidad activa. Desventajas: Mayor consumo de memoria, complejidad al configurar consultas complejas.
2. Dapper
Dapper es un micro-ORM ligero creado por el equipo de Stack Overflow. No proporciona un mapeo completo, pero permite ejecutar consultas SQL directamente, mapeando automáticamente los resultados en objetos de C#.
Características principales:
- Máximo rendimiento — Dapper es considerado uno de los ORM más rápidos para .NET.
- SQL directo — escribes consultas en SQL puro.
- Minimalismo — no hay migraciones, contextos ni configuraciones complejas.
Ejemplo de código:
using Dapper;using System.Data.SqlClient;using System.Linq;
public class User{ public int Id { get; set; } public string Name { get; set; } public string Email { get; set; }}
// Usostring connectionString = "Server=.;Database=MyDb;Trusted_Connection=True;";using (var connection = new SqlConnection(connectionString)){ // Ejecutar consulta SQL var users = connection.Query<User>("SELECT * FROM Users WHERE Name = @Name", new { Name = "Iván" }).ToList();
// Ejecutar procedimiento almacenado var result = connection.Query<User>("GetUsers", commandType: System.Data.CommandType.StoredProcedure);}Ventajas: Alta velocidad, simplicidad, consumo mínimo de recursos. Desventajas: Ausencia de migraciones, hay que escribir SQL manualmente, no hay carga automática de entidades relacionadas.
3. LINQ to SQL
También en la biblioteca
Spring Boot para Java: guía completa con ejemplos
Validación de datos en Kotlin: bibliotecas y enfoques
Configuración de aplicaciones PHP: bibliotecas y herramientas para gestionar ajustes
Cliente HTTP para C# (.NET): mejores bibliotecas para trabajar con solicitudes web
Hilt/Dagger para Kotlin: guía completa con ejemplos
Recommendations