DEV Community

Cover image for DataAccess: ADO.net
Bruno Freschi
Bruno Freschi

Posted on

DataAccess: ADO.net

Controle total e performance máxima

Se você usa .NET, precisa entender o ADO.NET. Ele é a base de tudo — inclusive do Dapper e do Entity Framework.

O que é?

ADO.NET é o conjunto de APIs nativas do .NET para acessar banco de dados diretamente. Sem abstrações pesadas. Sem mágica.

👉 Resultado: máxima performance e controle absoluto.


Quando faz sentido usar?

Use ADO.NET quando:

  • Performance é crítica (ETL, alto volume, baixa latência)
  • Você precisa de controle fino sobre SQL e transações
  • Quer evitar dependências externas

Evite quando:

  • Precisa de produtividade rápida (CRUDs simples)
  • Não quer escrever mapeamento manual

Como funciona (essencial)

Os 3 principais componentes:

  • SqlConnection → abre conexão
  • SqlCommand → executa SQL
  • SqlDataReader → lê dados (streaming, rápido)

Exemplo direto:

using var connection = new SqlConnection(connectionString);
var command = new SqlCommand("SELECT Id, Nome FROM Clientes", connection);

connection.Open();

using var reader = command.ExecuteReader();
while (reader.Read())
{
    var id = reader.GetInt32(0);
    var nome = reader.GetString(1);
}
Enter fullscreen mode Exit fullscreen mode

Sem ORM. Sem mapeamento automático. Só você e o banco.


Segurança básica (obrigatório)

Nunca faça isso:

$"SELECT * FROM Clientes WHERE Email = '{email}'"
Enter fullscreen mode Exit fullscreen mode

Use parâmetros:

command.Parameters.AddWithValue("@Email", email);
Enter fullscreen mode Exit fullscreen mode

👉 Evita SQL Injection e melhora cache de execução.


Performance: por que é tão rápido?

  • Sem reflexão
  • Sem geração de SQL
  • Leitura em streaming (DataReader)
  • Controle total de conexões

ETL? Aqui ele brilha

Para cargas massivas no SQL Server:

using var bulkCopy = new SqlBulkCopy(connection);
bulkCopy.DestinationTableName = "Clientes";
bulkCopy.WriteToServer(reader);
Enter fullscreen mode Exit fullscreen mode

👉 Ordens de magnitude mais rápido que INSERT em loop


Comparação rápida

ADO.NET Dapper EF
Performance 🔥 Máxima Alta Média
Controle SQL Total Total Parcial
Facilidade Baixa Média Alta

Regra prática

  • Quer controle e performance → ADO.NET
  • Quer equilíbrio → Dapper
  • Quer produtividade → EF

Insight final

Dominar ADO.NET muda seu nível como backend .NET.

Você passa a entender o que realmente acontece entre sua aplicação e o banco.

E isso impacta diretamente em performance, custo e escalabilidade.

Link para o repo.

GitHub logo BrunoSFreschi / DataAccess.Benchmark

DataAccess Benchmark é um laboratório de engenharia de software criado para analisar, o custo das diferentes abordagens de acesso a dados no ecossistema .NET.

Gemini_Generated_Image_g46htng46htng46h

DataAccess Benchmark

Ao estudar performance, não estamos apenas medindo tempo de execução Estamos observando a história da engenharia de software se manifestando em código.

Este repositório foi criado para demonstrar, de forma prática, a evolução das abordagens de acesso a dados no ecossistema .NET, comparando:

  • ADO.NET (baixo nível, controle total)
  • Dapper (micro-ORM, performance com praticidade)
  • Entity Framework Core (ORM completo, foco em produtividade)

Tudo medido com precisão usando BenchmarkDotNet, a ferramenta padrão para benchmarks profissionais em .NET.

Este projeto não é apenas um teste Ele é um laboratório para entender como a engenharia de software evoluiu ao longo dos anos.


A História do Acesso a Dados no .NET

Assim como a POO surgiu da Crise do Software, as diferentes formas de acessar banco de dados surgiram de um problema recorrente:

Como acessar dados com segurança, performance e manutenibilidade ao mesmo tempo?

Durante a evolução do .NET, três…

Top comments (0)