C#
- Dapper básico (revisitado) via Console
![]() |
Neste artigo vamos rever os conceitos básicos sobre o Dapper um micro ORM que pode ser usado em aplicações menos complexas. |
Se você não gosta de ORMs ou se o seu projeto não justifica a utilização de um ORM como o Entity Framework, o Dapper pode vir a calhar para você.
Por que então não dar uma chance ao Dapper conhecendo os seus recursos ?
Eu já falei sobre o Dapper nos seguintes artigos:
Hoje vou mostrar como é fácil usar o Dapper em um projeto Console.
recursos usados:
Criando o projeto no VS 2019 Community
Vamos criar um projeto usando a linguagem C# do tipo Console para .NET Core : Console App(.NET Core)
![]() |
Podemos chamar o projeto de CShp_Dapper1.
No projeto criado vamos incluir um arquivo de JSON chamado appsettings.json que para facilitar o nosso trabalho será colocado na pasta /bin/debug/netcoreapp2.2 do projeto.
Definindo a fonte de dados
Vamos usar como fonte de dados um banco de dados SQL Server Cadastro.mdf e a tabela Clientes que tem a seguinte estrutura e dados:
![]() |
![]() |
A seguir temos o script SQL para gerar a tabela:
CREATE TABLE [dbo].[Clientes] ( [ClienteId] INT IDENTITY (1, 1) NOT NULL, [Nome] NVARCHAR (80) NOT NULL, [Idade] INT NULL, [Email] NVARCHAR (150) NULL, [Pais] NVARCHAR (20) NULL, CONSTRAINT [PK_Clientes] PRIMARY KEY CLUSTERED ([ClienteId] ASC) ); |
A string de conexão deste banco de dados já pode ser incluida no arquivo appsettings.json conforme mostrado a seguir:
{
"ConnectionStrings": {
"DefaultConnection": "Data Source=MACORATTI;Initial Catalog=Cadastro;Integrated Security=True"
}
}
|
Vamos criar uma pasta Models no projeto e nesta classe definir a classe Cliente com o código abaixo:
public class Cliente
{
public int ClienteI { get; set; }
public string Nome { get; set; }
public int Idade { get; set; }
public string Email { get; set; }
public string Pais { get; set; }
}
|
Essa classe será o nosso DTO.
Instalando o Dapper e os pacotes do Configuration
No menu Tools acione o gerenciador de pacotes Nuget para a Solution e instale o pacote Dapper no projeto:
Instale também os seguines pacotes :
Agora que já temos tudo pronto vamos realizar as operações CRUD usando o Dapper.
Definindo o código no arquivo Program
Abra o arquivo Program e defina os namespaces que iremos usar:
using
CShp_Dapper1.Models; using Dapper; using Microsoft.Extensions.Configuration; using System; using System.Data.SqlClient; using System.IO; |
A seguir vamos definir uma instância de IConfiguration:
public static IConfigurationRoot Configuration { get; set; }
No método Main() inclua o código a seguir que lê a string de conexão e monta o menu:
static void Main(string[] args)
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
Configuration = builder.Build();
string _con = Configuration["ConnectionStrings:DefaultConnection"];
Console.WriteLine("\tc - Consultar");
Console.WriteLine("\ti - Incluir");
Console.WriteLine("\ta - Atualizar");
Console.WriteLine("\td - Deletar");
Console.Write("Sua opção (c,i,d,a) ? ");
switch (Console.ReadLine())
{
case "c":
Consultar(_con);
break;
case "i":
Incluir(_con);
break;
case "a":
Atualizar(_con);
break;
case "d":
Deletar(_con);
break;
}
Console.ReadKey();
}
|
A seguir vamos definir cada um dos métodos para realizar as operações de consulta, inclusão, atualização e exclusão dos dados.
1- Consultar Dados
static async void Consultar(string conexao) { using (var db = new SqlConnection(conexao)) { await db.OpenAsync(); var query = "Select Top 10 ClienteId,Nome,Idade,Pais From Clientes"; var clientes = await db.QueryAsync<Cliente>(query); foreach (var cliente in clientes) { Console.WriteLine(new string('*', 20)); Console.WriteLine("\nID: " + cliente.ClienteId.ToString()); Console.WriteLine("Nome : " + cliente.Nome); Console.WriteLine("Idade: " + cliente.Idade.ToString()); Console.WriteLine("Pais : " + cliente.Pais + "\n"); Console.WriteLine(new string('*', 20)); } Console.ReadLine(); } } |
2- Incluir Dados
static async void Incluir(string conexao) { using (var db = new SqlConnection(conexao)) { Cliente model = new Cliente(); model.Nome = "teste"; model.Email = "email@teste.com"; model.Idade = 99; model.Pais = "Terra"; try { await db.OpenAsync(); var query = @"Insert Into Clientes(Nome,Idade,Email,Pais) Values(@nome,@idade,@email,@pais)"; await db.ExecuteAsync(query, model); Console.WriteLine($"Cliente {model.Nome} incluido com sucesso"); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } |
3- Atualizar Dados
static async void Atualizar(string conexao) { using (var db = new SqlConnection(conexao)) { Cliente model = new Cliente(); model.Nome = "teste alterado"; model.Email = "email@teste.com"; model.Idade = 88; model.Pais = "Terra"; model.ClienteId = 2;
try |
4- Excluir Dados
static async void Deletar(string conexao) { int id = 2; using (var db = new SqlConnection(conexao)) { try { await db.OpenAsync(); var query = @"Delete from Clientes Where ClienteId=" + id; await db.ExecuteAsync(query,new { ClienteId = id }); Console.WriteLine($"Cliente excluido com sucesso"); } catch (Exception ex) { Console.WriteLine(ex.Message); } } }
|
Executando o projeto e realizando a consulta teremos o resultado a seguir:
Temos assim uma implementação básica do Dapper que pode ser uma opção muito versátil para projetos de pequeno porte para acessar dados com um bom desempenho.
Pegue o
projeto completo aqui:
CShp_Dapper1.zip
"E Jesus
clamou, e disse: Quem crê em mim, crê, não em mim, mas naquele que me enviou.
E quem me vê a mim, vê aquele que me enviou.
Eu sou a luz que vim ao mundo, para que todo aquele que crê em mim não permaneça
nas trevas."
João 12:44-46
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET