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