Dúvida: ADO.NET, Entity Framework ou Dapper

16/08/2017

0

Olá pessoal, blz!?
Toda vez que início um novo projeto eu sempre impacto na ideia de qual modelo de acesso a dados escolher.
Se minha escolha for Entity Framework eu fico preocupado com o modelo que será utilizado (CODE FIRST, MODEL FIRST ou ENGENHARIA REVERSA).

Por isso eu gostaria da ajuda de vcs para as seguintes dúvidas por favor:
1) Em um projeto novo, qual cenário é ideal para usar (ADO.NET , ENTITY FRAMEWORK OU DAPPER)?
2) Considerando um base com muitos registros, qual deles apresentará melhor performance?
3) Se a escolha for Entity Framework e pensando que eu já tenho algumas tabelas prontas (pessoa, endereço etc.) , qual modelo deverá ser aplicado, considerando que gostaria de facilitar a implementação dessas entidades no projeto?

Desde já agradeço a atenção.


Essa dúvida foi gerada a partir de um comentário no vídeo Como configurar o EF - Curso Primeiros passos com o Entity Framework - Aula 2
Jeferson Leite

Jeferson Leite

Responder

Post mais votado

21/08/2017

Olá, Jefferson. Tudo bem? Vamos às respostas:

1) No ADO.NET você não tem o mapeamento objeto-relacional de forma automática, ou seja, você precisa escrever o código para converter as consultas para objetos. No Dapper, por ser um "micro-ORM", você escreve as consultas e ele faz o mapeamento. Já no EF você nem precisa escrever as consultas. Ou seja, em termos de tempo e experiência de desenvolvimento o EF facilita toda a parte de acesso a dados para você.

2) A ordem de desempenho tende a ser: ADO.NET > Dapper > EF. Isso se explica devido às camadas de abstração que cada um traz. No ADO.NET você é responsável por "tudo" (consulta + conversão para objetos). No Dapper você escreve a consulta e ele converte pra você. Já o EF faz tudo sozinho (e justamente por isso as consultas podem não ser as melhores possíveis).

3) Atualmente temos optado sempre pela abordagem Code First (partindo das classes). Mesmo você tendo o banco pronto, pode adotar uma abordagem que podemos chamar de Code First From Database. Ou seja, você vai escrever as classes para mapear o banco existente e a partir daí começa a trabalhar a partir das classes.

Espero ter ajudado e caso fique alguma dúvida, é só falar.

Joel Rodrigues

Joel Rodrigues
Responder

Mais Posts

25/08/2017

Daniel Santos

Se você acessar a documentação do Dapper, lá tem uma comparações entre a velocidade de desempenho,
a diferença entre o Dapper o ADO.NET é mínima, em termos de desempenho o Dapper é ainda melhor pois o tempo/performance gasto no ADO Para fazer o mapeamento dos objetos não existe no Dapper, logo acaba se ganhando alguns milissegundos com isso.
Particularmente não sou muito fã de EntityFramework, depois que conheci e aprendi a usar o Dapper não troco mais.

Performance of SELECT mapping over 500 iterations - POCO serialization


Hand coded (using a SqlDataReader) 47ms
Dapper ExecuteMapperQuery 49ms
Entity framework ExecuteStoreQuery 631ms

Fonte
https://github.com/StackExchange/Dapper
Responder

25/08/2017

Daniel Santos

Se você acessar a documentação do Dapper, lá tem uma comparações entre a velocidade de desempenho,
a diferença entre o Dapper o ADO.NET é mínima, em termos de desempenho o Dapper é ainda melhor pois o tempo/performance gasto no ADO Para fazer o mapeamento dos objetos não existe no Dapper, logo acaba se ganhando alguns milissegundos com isso.
Particularmente não sou muito fã de EntityFramework, depois que conheci e aprendi a usar o Dapper não troco mais.

Performance of SELECT mapping over 500 iterations - POCO serialization


Hand coded (using a SqlDataReader) 47ms
Dapper ExecuteMapperQuery 49ms
Entity framework ExecuteStoreQuery 631ms

Fonte
https://github.com/StackExchange/Dapper
Responder

26/08/2017

Jeferson Leite

Bom dia!
Senhores, muito grato pelo retorno. Estarei analisando a situação e aprendendo mais sobre o Dapper.

Atenciosamente,
Jeferson
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar