O que é o Dapper e como utilizar esse micro ORM

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.

Dapper Tela 1

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.

Dapper Tela 2

Dapper Tela 3

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.

Dapper Tela 4

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:
Dapper Tela 5

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

Posted in .NET, Blog and tagged , , , .

6 Comments

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *