Este novo artigo sobre Dapper traz exemplos de uso deste micro-ORM com PostgreSQL e MySQL, em conjunto com o package Dapper.Contrib (este último sendo uma extensão do Dapper, que facilita a implementação de operações de CRUD). Além disso, foram incluídas aqui, orientações a respeito de quais providers ADO.NET empregar ao optar estes SGBDs.
Caso tenha interesse em conhecer mais sobre o Dapper, consulte também os seguintes artigos:
- Dapper: exemplos de utilização em ASP.NET Core e .NET Full
- Dapper: relacionamentos Um-para-Um e Um-para-Muitos (exemplos em ASP.NET Core)
- Dapper: exemplos em .NET Core 2.0 e ASP.NET Core 2.0
PostgreSQL
Para utilizar o PostgreSQL em uma aplicação .NET Core 2.0 será necessário adicionar o package Npgsql:
Na listagem a seguir é possível observar um exemplo de uso do Dapper.Contrib em conjunto com a classe NpgsqlConnection (namespace Npgsql):
using System.Collections.Generic; using Npgsql; using Microsoft.Extensions.Configuration; using Dapper.Contrib.Extensions; namespace APIIndicadores { public class IndicadoresDAO { private IConfiguration _configuracoes; public IndicadoresDAO(IConfiguration config) { _configuracoes = config; } public IEnumerable<Indicador> ListarTodos() { using (NpgsqlConnection conexao = new NpgsqlConnection( _configuracoes.GetConnectionString("BaseIndicadores"))) { return conexao.GetAll<Indicador>(); } } } }
O projeto contendo o tipo IndicadoresDAO (uma API REST para consulta a indicadores econômicos) já se encontra no GitHub:
MySQL
O acesso a uma base MySQL a partir de uma aplicação .NET Core 2.0 acontecerá por meio do package MySqlConnector:
Já a próxima listagem traz um exemplo de uso do Dapper.Contrib e da classe MySqlConnection (namespace MySql.Data.MySqlClient):
using System.Collections.Generic; using Microsoft.Extensions.Configuration; using MySql.Data.MySqlClient; using Dapper.Contrib.Extensions; namespace APIEstados { public class EstadosDAO { private IConfiguration _configuracoes; public EstadosDAO(IConfiguration config) { _configuracoes = config; } public IEnumerable<Estado> ListarTodos() { using (MySqlConnection conexao = new MySqlConnection( _configuracoes.GetConnectionString("BaseEstados"))) { return conexao.GetAll<Estado>(); } } } }
As fontes do projeto contendo a classe EstadosDAO (também uma API REST) estão no GitHub: