Dúvida: ADO.NET, Entity Framework ou Dapper
16/08/2017
0
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
Post mais votado
21/08/2017
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
Mais Posts
25/08/2017
Daniel Santos
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
25/08/2017
Daniel Santos
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
26/08/2017
Jeferson Leite
Senhores, muito grato pelo retorno. Estarei analisando a situação e aprendendo mais sobre o Dapper.
Atenciosamente,
Jeferson
Clique aqui para fazer login e interagir na Comunidade :)