EF
Core -
Configurando o ambiente para aplicar o Migrations
|
No artigo de hoje
veremos como configurar o ambiente para aplicar o Migrations
do EF Core |
O Migrations é
uma ferramenta do Entity Framework Core que permite que você versione o seu
modelo de dados e aplique as alterações de forma ordenada no banco de dados.
Com o Migrations,
você pode definir as alterações que deseja fazer no seu modelo de dados como
classes de migração, que são adicionadas a uma sequência de migrações.
Quando você aplica essas migrações ao banco de dados, o EF Core compara as
migrações que já foram aplicadas ao banco de dados com as migrações que
ainda não foram aplicadas e aplica apenas as novas migrações na sequência
correta.
Desta forma após
você definir as entidades do seu modelo de domínio e o relacionamento entre
elas e também definir a string de conexão no arquivo
appsettings do projeto você têm tudo pronto para aplicar o
migrations.
Então quais os
pacotes são necessários para aplicar o migrations ?
Você vai precisar do pacote do provedor do banco de dados que você esta
usando.
Se você estiver usando o SQL Server o pacote Nuget usado é :
Microsoft.EntityFrameworkCore.SqlServer que é
um provedor do EF Core para acessar o SQL Server.
O comando usado
para instalar este pacote é :
Install-Package
Microsoft.EntityFrameworkCore.SqlServer
Aplicando o Migrations
Para aplicar os
comandos do Migrations temos duas opções :
1 - Usar o pacote
Microsoft.EntityFrameworkCore.Tools
Este pacote é uma
extensão do Entity Framework Core que fornece uma série de ferramentas de
linha de comando para facilitar o desenvolvimento de aplicativos baseados em
EF Core. Dentre os comandos mais usados oferecidos por este pacote temos:
Add-Migration <nome-migração>
: Gera uma migração com base nas alterações no modelo de entidade do
aplicativo.
Update-Database: Aplica as migrações mais
recentes ao banco de dados
Para instalar
este pacote use o comando :
-
Install-Package
Microsoft.EntityFrameworkCore.Tools
-
dotnet add package
Microsoft.EntityFrameworkCore.Tools (.NET CLI)
2-
Usar o pacote
Microsoft.EntityFrameworkCore.Design
Este pacote nuget
é necessário apenas se você for usar a ferramenta
dotnet ef do EF Core pois ele fornece a
funcionalidade necessária para o comando dotnet ef
descobrir e usar o seu arquivo de contexto e as configurações do banco de
dados e
permite executar as operações de migração do banco de
dados em seu projeto.
Usando a
ferramento dotnet ef
A ferramenta
dotnet ef pode ser instalada usando o
comando :
dotnet tool install
--global dotnet-ef
Os principais
comandos desta ferramenta para gerenciar Migrações são :
1- Criar uma nova
migração: dotnet ef migrations add
<nome_da_migracao>
Esse comando cria uma nova migração com o nome especificado. A migração é
criada com base nas diferenças entre o modelo de dados atual e o modelo de
dados anterior.
2 Aplicar migrações pendentes ao banco de dados:
dotnet ef database update
Este comando aplica as migrações pendentes ao banco de dados. Ele verifica a
tabela __EFMigrationsHistory para determinar
quais migrações ainda precisam ser aplicadas.
3- Listar as migrações pendentes: dotnet ef
migrations list
Este comando lista todas as migrações pendentes que ainda não foram
aplicadas ao banco de dados.
3- Desfazer a última migração: dotnet
ef migrations remove
Este comando desfaz a última migração aplicada. Ele remove a última migração
da lista de migrações aplicadas e exclui o arquivo da migração do projeto.
Este comando não afeta o banco de dados.
4- Gerar um script SQL para aplicar migrações pendentes:
dotnet ef migrations script
Este comando gera um script SQL que pode ser usado para aplicar as migrações
pendentes em um banco de dados manualmente. O script inclui todas as
instruções SQL necessárias para aplicar as migrações pendentes na ordem
correta.
Assim para
aplicar o Migrations usando a ferramenta dotnet
ef você precisa instalar no seu projeto os pacotes :
(Considerando o uso do SQL Server)
-
Microsoft.EntityFrameworkCore.SqlServer
-
Microsoft.EntityFrameworkCore.Design
Se não for usar a
ferramenta dotnet ef precisa instalar :
-
Microsoft.EntityFrameworkCore.SqlServer
-
Microsoft.EntityFrameworkCore.Tools
Projeto em camadas
Se você tem um
projeto em camadas e o contexto do Entity Framework Core está na camada de
infraestrutura, você precisa informar o caminho para a camada de
infraestrutura onde o contexto está localizado.
Para isso,
você pode usar as opções:
- -p
para especificar o projeto
- -s
para especificar o diretório do projeto de inicialização.
a-) Para criar
uma nova migração, use o seguinte comando no diretório do projeto:
dotnet ef migrations add <NOME_DA_MIGRAÇÃO>
-p NomeDoProjeto.Infra -s NomeDoProjeto.UI
Onde NomeDoProjeto é o nome do seu projeto em
camadas. Observe que a opção -p especifica o caminho para a camada de
infraestrutura e a opção -s especifica o diretório do projeto de
inicialização, que geralmente é a camada de interface do usuário (UI).
b-) Para aplicar as migrações pendentes no banco de dados, use o seguinte
comando:
dotnet ef database update -p NomeDoProjeto.Infra -s
NomeDoProjeto.UI
Esse comando aplica todas as migrações pendentes no banco de dados
configurado no contexto especificado na camada de infraestrutura.
Se o seu arquivo de contexto - AppDbContext -
estiver em uma camada ou pasta específica, você pode especificar o caminho
para o arquivo de contexto usando a opção -c ou
--context.
c-) Para criar uma nova migração, use o seguinte comando no diretório do
projeto:
dotnet ef migrations add <NOME_DA_MIGRAÇÃO>
--context AppDbContext -p NomeDoProjeto.Infra -s NomeDoProjeto.UI
Onde NomeDoProjeto é o nome do seu projeto em
camadas e AppDbContext é o nome do seu arquivo
de contexto.
d-) Para aplicar as migrações pendentes no banco de dados, use o seguinte
comando:
dotnet ef database update --context AppDbContext -p
NomeDoProjeto.Infra -s NomeDoProjeto.UI
Esse comando aplica todas as migrações pendentes no banco de dados
configurado no contexto especificado.
E estamos
conversados...
"Louvai ao SENHOR. Louvai ao SENHOR desde os céus, louvai-o nas alturas.
Louvai-o, todos os seus anjos; louvai-o, todos os seus exércitos.
Louvai-o,
sol e lua; louvai-o, todas as estrelas luzentes."
Salmos 148:1-3
Referências:
José Carlos Macoratti