DEV Community

Beatriz813
Beatriz813

Posted on

Tutorial para Aplicar Migrations em Aplicações ASP.NET

Para realizar esta tarefa criei dois projetos para exemplificar os dois métodos possíveis a fim de criar e mapear classes para tabelas em bancos de dados. Um utilizando System.ComponentModel.DataAnnotations e outro o método OnModelCreating.

Usando OnModelCreating

O primeiro projeto a ser criado é o ef-sem-annotations, criamos ele através do comando:

image

Nele iremos precisar instalar dois pacotes o MySql.Data.EntityFrameworkCore versão 8.0.22 e Microsoft.EntityFrameworkCore.Design versão 3.1.10.

Após a criação do projeto criamos a classe Pessoa que irá representar a nossa tabela.

image

Depois criamos a classe DataContext que será a nossa orquestradora, onde iremos declarar efetivamente que a classe Pessoa é o mapeamento de uma tabela.

image

O próximo passo é criar a connection string com o nosso banco de dados.

image

Feito isso podemos aplicar a migration com os seguintes comandos:

image

image

Ao aplicar a migration podemos conferir o resultado no banco de dados. Repare nos tipos e nas regras de cada coluna, são bem genéricas. Mas isso acontece por que não aplicamos nenhuma regra.

image

O primeiro modo de aplicar regras a essa migration é utilizando a sobrescrita do método OnModelCreating na classe DataContext.

image

Repare que agora os campos Nome e Idade são obrigatórios e o primeiro tem o tamanho máximo de 30 caracteres. Para aplicar essas regras ao banco de dados executamos uma nova migration

image

image

Com isso temos o novo resultado no banco de dados:

image

Usando Annotations

O segundo projeto chamado ef-com-annotations foi criado como uma WebApi também.

image

Nele iremos precisar instalar dois pacotes o MySql.Data.EntityFrameworkCore versão 8.0.22 e Microsoft.EntityFrameworkCore.Design versão 3.1.10.

Utilizamos o pacote System.ComponentModel.DataAnnotations na construção da classe Pessoa.

image

A classe DataContext fica:

image

A nossa string de conexão fica:

image

E então podemos aplicar a nossa migration:

image

image

O resultado desse código no banco de dados é o seguinte:

image

Repare que em ambos métodos chegamos ao mesmo resultado, porém um com menos código que outro. Essas são duas formas possíveis de mapear classes para bancos de dados, basta você analisar qual das duas é mais adequada para a sua solução.

Oldest comments (0)