Neste artigo vamos criar um projeto Console e realizar as operações CRUD com o MySQL usando o EF Core. |
Vamos criar um projeto Console no .NET 6 e
usando o EF Core vamos realizar as operações CRUD com um banco de dados MySql.
Criando o projeto Console
Crie o projeto Console EFCore6_MySql no VS 2022 e a seguir inclua o pacote MySql.EntityFrameworkCore da Oracle no projeto.
No projeto vamos criar a pasta Data e nesta pasta vamos definir a entidade Cliente :
public class Cliente
{
[Column("id")]
public int Id { get; set; }
[Column("nome")]
public string? Nome { get; set; }
[Column("email")]
public string? Email { get; set; }
}
|
Nesta mesma pasta vamos criar o arquivo de contexto chamado AppDbContext que herda de DbContext:
using Microsoft.EntityFrameworkCore;
using System.Reflection;
namespace EFCore6_MySql.Data;
public class AppDbContext : DbContext
{
public DbSet<Cliente>? Clientes { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var connString =
"server=127.0.0.1;user id=root;password=Hw8vup5e;port=3306;database=cadastro";
optionsBuilder.UseMySQL(connString, options =>
{
options.MigrationsAssembly(Assembly.GetExecutingAssembly().FullName);
});
base.OnConfiguring(optionsBuilder);
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// mapeia as tabelas
modelBuilder.Entity<Cliente>().ToTable("Clientes");
base.OnModelCreating(modelBuilder);
}
}
|
Neste código estamos definindo a string de conexão e realizando o mapeamento da entidade Cliente para a tabela Clientes.
Podemos criar a tabela no MySQL ou aplicar o Migrations usando os seguintes comandos da ferramenta EF Core Tools :
dotnet ef migrations add Inicial
dotnet ef database update
Criando o menu de opções na classe Program
Agora vamos definir o menu de opções na classe Program que vai permitir selecionar a opção para realizar a respectiva tarefa.
using EFCore6_MySql.Data;
Console.WriteLine("## Conexão com MySql ##");
while (true)
{
Console.Write("\n(L)er e exibir dados");
Console.Write("\n(I)ncluir dados");
Console.Write("\n(A)tualizar dados");
Console.Write("\n(D)eletar dados");
Console.Write("\n(S)air\n");
char opcao = Convert.ToChar(Console.ReadLine().ToLower());
if (opcao == 'l')
LerExibirDadosMySql();
else if (opcao == 'i')
IncluirDadosMySql();
else if (opcao == 'a')
AtualizarDadosMySql();
else if (opcao == 'd')
DeletarDadosMySql();
else if (opcao == 's')
break;
else
Console.WriteLine("\nOpção inválida");
}
|
A seguir podemos definir os métodos para realizar as operações:
1- Ler e exibir dados
static void LerExibirDadosMySql()
{
using (var dbContext = new AppDbContext())
{
foreach (var model in dbContext.Clientes)
{
Console.WriteLine($"id={model.Id} nome={model.Nome}");
}
}
}
|
2- Incluir dados
static void IncluirDadosMySql()
{
Console.WriteLine("\nIncluir dados\n");
Console.Write("Nome : \t");
var nome = Console.ReadLine();
Console.Write("Email : \t");
var email = Console.ReadLine();
Console.ReadKey();
if (string.IsNullOrEmpty(nome) && string.IsNullOrEmpty(email))
{
Console.WriteLine("\nDados inválidos...\n");
}
else
{
using (var dbContext = new AppDbContext())
{
var testeModel = new Cliente
{
Nome = nome,
Email = email
};
dbContext.Add(testeModel);
dbContext.SaveChanges();
}
Console.WriteLine("\nDados incluidos...\n");
}
}
|
3- Atualizar dados
static void AtualizarDadosMySql() { using (var dbContext = new AppDbContext()) { var cliente = dbContext.Clientes.Where(record => record.Id == 2).FirstOrDefault(); cliente.Nome = "Paulo da Silva"; dbContext.Update(cliente); dbContext.SaveChanges(); } Console.WriteLine("\nDados atualizados...\n"); } |
Aqui estamos atualizando o registro de Id igual a 2.
4- Excluir dados
static void DeletarDadosMySql()
{
using var dbContext = new AppDbContext();
var cliente = dbContext.Clientes.Where(record => record.Id == 2).FirstOrDefault();
if (cliente is not null)
{
dbContext.Remove(cliente);
dbContext.SaveChanges();
}
Console.WriteLine("\nDados excluídos...\n");
}
|
Aqui estamos excluindo o registro de Id igual a 2.
Pegue o projeto aqui : EFCore6_MySql.zip ...
"Disse-lhe Jesus:
Estou há tanto tempo convosco, e não me tendes conhecido, Filipe? Quem me vê a
mim vê o Pai; e como dizes tu: Mostra-nos o Pai? "
João 14:9
Referências: