ORM para C# (.NET): comparação entre Entity Framework, Dapper e LINQ to SQL

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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



Recommendations