ORM para C# (.NET): comparação e exemplos
No desenvolvimento moderno na plataforma .NET, o trabalho com bancos de dados raramente ocorre sem o uso de Object-Relational Mapping (ORM). As bibliotecas ORM permitem que os desenvolvedores interajam com bancos de dados relacionais através de código orientado a objetos, eliminando a necessidade de escrever consultas SQL complexas manualmente. Neste artigo, compararemos os três ORMs mais populares para C#: Entity Framework Core, Dapper e LINQ to SQL, além de apresentar exemplos práticos de uso.
1. Entity Framework Core (EF Core)
EF Core é um ORM moderno e multiplataforma da Microsoft, que é a evolução do Entity Framework 6. Ele suporta trabalho com diversos SGBDs (SQL Server, PostgreSQL, SQLite, MySQL, etc.) e oferece recursos poderosos para manipulação de dados.
Principais características:
- Code First / Database First — é possível criar o banco de dados a partir do código ou vice-versa.
- Consultas LINQ — as consultas são escritas em C#, e o EF Core as converte em SQL.
- Migrações — gerenciamento automático do esquema do banco de dados.
- Carregamento tardio (Lazy Loading) — carregamento automático de dados relacionados.
Exemplo 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()){ // Adicionando um usuário var user = new User { Name = "Иван", Email = "ivan@example.com" }; db.Users.Add(user); db.SaveChanges();
// Consulta via LINQ var users = db.Users.Where(u => u.Name.Contains("Иван")).ToList();}Vantagens: Alta performance, rica funcionalidade, suporte a migrações, comunidade ativa. Desvantagens: Maior consumo de memória, complexidade ao configurar consultas complexas.
2. Dapper
Dapper é um micro-ORM leve, criado pela equipe do Stack Overflow. Ele não fornece mapeamento completo, mas permite executar consultas SQL diretamente, mapeando automaticamente os resultados para objetos C#.
Principais características:
- Máxima performance — Dapper é considerado um dos ORMs mais rápidos para .NET.
- SQL direto — você escreve consultas em SQL puro.
- Minimalismo — sem migrações, contextos ou configurações complexas.
Exemplo 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)){ // Executando uma consulta SQL var users = connection.Query<User>("SELECT * FROM Users WHERE Name = @Name", new { Name = "Иван" }).ToList();
// Executando uma stored procedure var result = connection.Query<User>("GetUsers", commandType: System.Data.CommandType.StoredProcedure);}Vantagens: Alta velocidade, simplicidade, consumo mínimo de recursos. Desvantagens: Ausência de migrações, necessidade de escrever SQL manualmente, sem carregamento automático de entidades relacionadas.
3. LINQ to SQL
Também na biblioteca
Serialização de objetos em Java: guia completo com exemplos
prometheus/client_golang para Go: guia completo com exemplos práticos
Análise de HTML em Rust: bibliotecas e exemplos para web scraping
Validação de dados em Swift (iOS/macOS): melhores práticas e ferramentas
Gerador de QR Codes em TypeScript: qrcode.js e qrcode-generator
Recommendations