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

.NET

16/08/2017

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

Curtidas 0

Melhor post

Joel Rodrigues

Joel Rodrigues

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.
GOSTEI 1

Mais Respostas

Daniel Santos

Daniel Santos

16/08/2017

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
GOSTEI 1
Daniel Santos

Daniel Santos

16/08/2017

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
GOSTEI 1
Jeferson Leite

Jeferson Leite

16/08/2017

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

Atenciosamente,
Jeferson
GOSTEI 0
POSTAR