Essa documentação trata-se de um passo a passo de como implementar uma conexão com o banco MySQL utilizando .NET.
- Link para baixar o MSI Installer:
https://dev.mysql.com/downloads/installer/
Selecione a opção Custom e escolha as seguintes ferramentas:
- MySQL Server
- MySQL Workbench
- Defina um usuário e senha para acessar o server
- Abra o visual Studio , e clique em
Create new project
- Escolha o padrão de projeto
ASP.NET Core Web app (Model-View-Controller)
Para fazermos o CRUD no banco de dados precisaremos de instalar o plugin EntityFrameWork, para instalar, vá até a barra de ferramenta superior > Tools > Nuget Package Manager > Package Manager Console
, e digite os seguintes comandos:
Install-Package Microsoft.EntityFrameworkCore
Install-Package Microsoft.EntityFrameworkCore.Design
Install-Package Pomelo.EntityFrameworkCore.MySql
Dentro da pasta Models crie os seguintes arquivos:
- UserModel.cs:
using NameSpaceDoProjeto.Models;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace NameSpaceDoProjeto.Models;
[Table("USER")]
public class UserModel
{
[Display(Name = "Código")]
[Column("id")]
public int Id { get; set; }
[Display(Name = "Código do endereço")]
[ForeignKey("address_id")]
[Column("address_id")]
public int AddressId { get; set; }
[Display(Name = "Nome")]
[Column("name")]
public string Name { get; set; }
[Display(Name = "Email")]
[Column("email")]
public string Email { get; set; }
[Display(Name = "Telefone")]
[Column("phone")]
public string Phone { get; set; }
[Display(Name = "Documento")]
[Column("document")]
public string Document { get; set; }
[Display(Name = "Status")]
[Column("status")]
public string Status { get; set; }
public AddressModel? Address { get; set; }
}
- AddressModel.cs:
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using TestMySQLConnection.Models;
namespace NameSpaceDoProjeto.Models;
[Table("ADDRESS")]
public class AddressModel
{
[Display(Name = "Código")]
[Column("id")]
public int Id { get; set; }
[Display(Name = "Número")]
[Column("number")]
public string Number { get; set; }
[Display(Name = "Rua")]
[Column("street")]
public string Street { get; set; }
[Display(Name = "Complemento")]
[Column("complement")]
public string Complement { get; set; }
[Display(Name = "Cidade")]
[Column("city")]
public string City { get; set; }
[Display(Name = "Estado")]
[Column("state")]
public string State { get; set; }
[Display(Name = "Zip Code")]
[Column("zip_code")]
public string ZipCode { get; set; }
[Display(Name = "País")]
[Column("country")]
public string Country { get; set; }
[Display(Name = "País")]
[Column("country")]
public ICollection<User?> Users { get; set; } = new List<User?>();
}
Crie uma pasta na raiz do projeto com o nome Database e adicione o seguinte arquivo:
- Contexto.cs:
using Microsoft.EntityFrameworkCore;
using NameSpaceDoProjeto.Models;
namespace NameSpaceDoProjeto.Data;
public class Contexto : DbContext
{
public Contexto(DbContextOptions<Contexto> options) : base(options)
{
}
public DbSet<User> Users { get; set; }
public DbSet<Address> Addresses { get; set; }
}
- O ASP.NET possui um contêiner de injeção de dependência (DI), onde são registradas as dependências. Quando um Controller ou Serviço necessita de uma delas o ASP.NET faz a injeção dessa instância.
- No nosso caso, para que os Controllers e Serviços façam a interação com o banco, é preciso de uma instancia
Contexto
. - Para Registrar uma instancia de contexto adicione esse trecho ao arquivo
program.cs
:
// BEGIN
builder.Services.AddDbContext<Contexto>(
options => options.UseMySql("server=localhost;initial catalog=MYSQL_CONNECTION;uid=user;pwd=senha",
Microsoft.EntityFrameworkCore.ServerVersion.Parse("8.0.36-mysql"),
));
// END
var app = builder.Build();
- Vá na pasta Controllers e clique com botão direito do mouse > add > Controller.. e adicione um controller
- Escolha a opção
MVC Controller with views, using Entity Framework
- Escolha a classe modelo (Nossas entidades/tabelas do banco)
- Escolha a classe Contexto
Antes de executar o programa, precisamos criar o migration/update do banco de dados, para fazer isso execute os seguintes comandos:
Add-Migration Criacao-Inicial -Context Contexto
Update-Database -Context Contexto
- navegue na pasta Views > Home > Index.cshtml:
- Substitua o codigo por esse:
@{
ViewData["Title"] = "Home Page";
}
<div class="text-center">
<h1 class="display-4">Conexão com o MySQL Utilizando ASP.NET Core MVC </h1>
<h5 >Tabelas</h5>
<p>CRUD Tabela <a href="@Url.Action("Index", "User")">User</a>.</p>
<p>CRUD Tabela <a href="@Url.Action("Index", "Address")">Address</a>.</p>
</div>