O que é o Dapper?
O Dapper é um ORM (Object Relational Mapping) voltado para o desenvolvimento .NET, onde seu principal objetivo é melhorar o desempenho das consultas ao banco de dados. Ele não conta com toda a gama de um ORM mais facilita muito o desenvolvimento de aplicações com melhor desempenho.
História
O Dapper foi desenvolvido por Marc Gravell e Sam Saffron enquanto trabalhavam no Stack Overflow, eles estavam resolvendo problemas de performance da aplicação. O Stack Overflow conta com um tráfego extremamente alto onde em 2015 teve cerca de 5,7 bilhões de exibições de páginas. A saída que encontraram para melhorar a performance do Stack Overfolw foi criar seu próprio ORM, onde o mesmo visava performance nas consultas de banco de dados.
Hoje o projeto continua ativo, teve sua utilização muito difundida no meio do desenvolvimento. O mesmo é de código aberto, disponível no Github (http://github.com/StackExchange/dapper-dot-net).
Como funciona
O Dapper trabalha com o conceito de Extension methods, onde ele implementa um método de extensão da classe de conexão do banco, onde ao fazer a consulta ao banco de dados o mesmo vai fazer o mapeamento do retorno do Data Reader para o Modelo de dados.
Como utilizar
Sua utilização é simples, abaixo vamos criar um projeto do tipo console aplication.
Abaixo vamos fazer a conexão com o banco de dados e colocar ele em estado Open.
var conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=TRABALHO;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"); conn.Open();
Nesse momento é necessário fazer a referência do Dapper via Nuget e dar o using.
Agora vamos utilizar o Extension Method do Dapper, através da conexão com o banco, veja abaixo:
var cbos = conn.Query("select * from cbo");
Podemos ver que chamando o método ele já é reconhecido.
Abaixo temos o restante da implementação:
foreach(var cbo in cbos) { Console.WriteLine("{0} - {1}", cbo.Id, cbo.Descricao); } conn.Close();
Se executar o código vai ver que ele já fez o mapeamento do objeto para a variável e já pode ser lida.
Podemos ver que ele cria uma lista de objetos do tipo DapperRow.
Outras formas de Uso
O Dapper também pode mapear para um modelo de banco de dados que você tenha na aplicação, abaixo vamos criar a classe Cbo para mostar:
public class Cbo { public int Id { get; set; } public string Codigo { get; set; } public string Descricao { get; set; } }
A nossa consulta agora fica da seguinte forma:
var cbos = conn.Query<Cbo>("select * from cbo");
Dessa forma o retorno do objeto muda para uma Lista de objetos do tipo Cbo, veja abaixo:
Conclusão
Podemos ver que utilizando o Dapper não vamos precisar fazer nenhum while lendo do DataReader para montar nossos objetos, fazendo com que tenhamos menos trabalho em nossas implementações.
Espero que tenham gostado da dica e até a próxima.
Código do exemplo:
https://github.com/tbvieira/exemplodapper
Referências
https://msdn.microsoft.com/pt-br/magazine/mt703432.aspx
https://en.wikipedia.org/wiki/Dapper_ORM
http://www.macoratti.net/15/12/adn_dapper1.htm
Muito bom o artigo!!
Muito obrigado Guilherme
Parabéns pelo artigo!
Muito obrigado pelo comentário Leandro
O artigo é claro e direto. Excelente para uma ideia geral do iniciante. Parabéns!
Valeu camarada!!