Hoje vamos fazer uma comparação entre o EF Core e a ADO .NET. |
A ADO.NET e o Entity Framework são
conectores entre as aplicações e o banco de dados, e, possuem um conjunto de
bibliotecas que são usadas para acessar serviços de dados e dar suporte às
necessidades de desenvolvimento de bancos de dados relacionais ou XML em
aplicativos .NET, como aplicativos console, aplicativos desktop,
aplicativos web e serviços WCF/Web API.
Ambos são parte integrante da plataforma .NET com classes e objetos .NET. Assim para criar um aplicativo de banco de dados, basta projetar o front-end e conectá-lo a sua fonte de dados usando ADO.NET ou Entity Framework.
Mas qual a diferença entre ADO .NET e Entity Framework ?
O que é ADO.NET
ADO.NET significa ActiveX Data Object, fornece uma ponte entre
sistemas relacionais e não relacionais. É uma ótima tecnologia
depois do ADO tradicional, que dá a vantagem de criar tudo do zero e
ter um controle total de acesso de um banco de dados na aplicação.
Você pode obter dados usando ADO.NET no modo desconectado e pode atender
a um grande número de conexões sem comprometer o desempenho de um
aplicativo.
Na ADO.NET, você pode acessar e
modificar dados armazenados em fontes de dados como Oracle, MS SQL
Server, MySQL e XML. A ADO .NET possui um conjunto de classes e provedores de
dados equivalentes aos drivers OLE DB, ODBC e JDBC, e, e usa
principalmente dois namespaces : System.Data.dll e System.Xml.dll
que suporta a interação entre cliente e banco de dados.
Você pode usar qualquer IDE que suporte .Net Framework para projetar
o front-end de um aplicativo e conectá-lo ao banco de dados por meio
do ADO.NET.
Arquitetura ADO.NET
A ADO.NET usa uma arquitetura multicamada que possui diferentes componentes .NET para interagir com o banco de dados e processar o resultado da consulta usando objetos Connection, Reader, Command, Adapter e DataSet/DataTable.
Exemplo de código usando ADO .NET :
public class UsuarioRepository |
O que é Entity Framework ?
A Microsoft introduziu o Entity Framework no .NET Framework 3.5 em
2008, para permitir que os desenvolvedores se concentrem em objetos
de domínio de negócios em vez de trabalhar com dados armazenados de
banco de dados subjacentes, assim, eliminar a necessidade de escrever
código para escrever e ler dados de fontes de dados.
O Entity Framework é um Object Relational Mapper (ORM), construído
no topo da ADO.NET; ele cria o código necessário automaticamente
para armazenar e recuperar dados, portanto, o desenvolvedor só
precisa se concentrar na criação do aplicativo, e não em lidar com
bancos de dados e seus problemas.
Você pode fazer uma aplicação usando o Entity Framework com
conhecimento mínimo de banco de dados, pois o framework está fazendo
a maioria das operações e comandos, e é fácil implementar operações
CRUD nele. Portanto, ele reduz o tempo de desenvolvimento e você pode se
concentrar facilmente na produção em vez dos bancos de dados.
Arquitetura do Entity Framework
O Entity Framework consiste nas três camadas a seguir:
Object
Service
O Object Service é a camada superior na arquitetura do Entity
Framework. Ele mantém a sessão entre o aplicativo e o banco de dados
e executa operações CRUD com a ajuda de consultas. Ele
representa as entidades de modelo de um aplicativo.
Entity Client
O Entity Client é a camada principal no Entity Framework, que
conecta a camada de fonte de dados à camada de serviço de objeto com
a ajuda de provedores. Ela permite que os desenvolvedores escrevam
consultas LINQ e leiam ou gravem dados sem gerar classes de esquema
conceitual.
Data Provider
A camada Data Provider está diretamente ligada ao banco de dados.
Ela é responsável por analisar a consulta em uma expressão de
comando SQL nativa no banco de dados e, em seguida, fornecer os
resultados de volta aos objetos de domínio do aplicativo.
Você pode inserir um novo usuário na fonte de dados usando uma
abordagem Code-First do Entity Framework
no exemplo a seguir:
public class UsuarioRepository |
Desempenho
O ADO.NET oferece melhor desempenho, pois está diretamente conectado à fonte de
dados, o que torna o processamento mais rápido do que o Entity Framework, pois
traduz as consultas LINQ para SQL primeiro e depois processa a consulta.
Velocidade de Desenvolvimento
O ADO.NET dá total controle sobre a camada de dados, que o desenvolvedor
precisa para fazer classes e métodos do zero para permitir a comunicação entre
aplicação e banco de dados. Isso requer mais esforço e tempo para construir uma
estrutura completa de camada de acesso a dados. Considerando que, o Entity
Framework gera modelos e classes de contexto de banco de dados automaticamente
para lidar com operações de banco de dados e, portanto, requer menos esforço e
tempo.
Código sustentável
Na ADO.NET, a depuração é complicada à medida que você vai da camada de
aplicativo para a camada de banco de dados, um por um, para descobrir o que está
acontecendo em um aplicativo, enquanto o Entity Framework fornece
relacionamentos claramente modelados de entidades e camadas dependentes.
Flexibilidade
A ADO.NET oferece uma grande flexibilidade em termos de consultas e procedimentos
SQL brutos em relação ao Entity Framework, fornecendo controle total sobre um banco
de dados.
Conclusão
Siga o caminho certo antes de começar. Se você deseja ter mais controle sobre
comandos e instruções SQL, e, quer ter mais desempenho a ADO.NET é uma opção para trabalhar.
O Entity Framework é poderoso o suficiente para lidar com serviços de banco de dados automatizando o mecanismo de geração de código de consultas SQL básicas mas é uma camada de abstração e assim, mesmo estando cada vez mais rápido e gerando consultas SQL otimizadas, ele é mais lento do que usar ADO .NET puro da forma correta.
Você pode ter ambas as abordagens em um único projeto, ou seja, Entity Framework para operações CRUD e ADO.NET para fins de relatório e operações SQL de dados em massa.
E estamos conversados.
"Aguardo
ansiosamente e espero que em nada serei envergonhado. Pelo contrário, com toda a
determinação de sempre, também agora Cristo será engrandecido em meu corpo, quer
pela vida quer pela morte;
porque para mim o viver é Cristo e o morrer é lucro "
Filipenses 1:20-21
Referências: