Quando trabalhamos com soluções grandes, onde há vários projetos e cada um tem sua própria base de dados, assim como seu próprio versionamento usando Migrations do Entity Framework, fica meio complicado ficar alterando o Set as startup project e o Default Project na janela do Package Manager Console. Então, o ideal é apontar os projetos de configuração e dados na mesma linha de comando do Add-Migration e Update-Database.
Atualizando o banco de dados
Quando abrimos uma projeto que já tem migrations, precisamos atualizar o banco de dados, e para isso usamos o comando Update-Database. Mas podemos ser mais específico, e não precisar escolher nada em tela para que ele saiba onde achar a Connection String e Contexto, usando o comando abaixo.
1 |
Update-Database -ProjectName NomeDoProjetoDeDados -StartUpProjectName NomeDoProjetoInicial -ConfigurationTypeName NomeDoProjeto.Configuration -Verbose |
Update-Database
Este comando atualiza o banco de dados com a ultima versão das migrations registradas, assim como roda algum Seed que pode popular tabelas.
-ProjectName
Nome do projeto onde está a configuração das entidades que representam os objetos do banco de dados, ou os DbSets.
-StartUpProjectName
O projeto que contém a Connection String para conexão com o banco de dados.
-ConfigurationTypeName
Nome completo, incluindo as namespaces, da entidade de configuração das migrations. Este arquivo é aquele que é gerado automaticamente ao usar o comando Enable-Migrations para ativar as migrações.
-Verbose
Este parâmetro exibe na tela todas as alterações efetuadas, assim como configurações definidas nos parâmetros anteriores.
Adicionando uma nova migração
Após atualizar o banco de dados, fazer as alterações nos objetos de domínio, precisamos adicionar a migração para depois enviar ao banco de dados as alterações versionadas, e novamente, é preciso que não precisemos definir o projeto de inicialização e dados. Para isso, use o comando a seguir:
1 |
Add-Migration -ProjectName NomeDoProjetoDeDados -StartUpProjectName NomeDoProjetoDeInicializacao -ConfigurationTypeName NomeDoProjetoDeDados...Configuration -Name NomeDaMigration |
Além dos parâmetros -ProjectName, -StartUpProjectName e -ConfigurationTypeName que já foram explicados no tópico anterior, precisamos incluir o parâmetro -Name e definir um nome que identifique qual alteração será feita no banco de dados.
Após adicionar a migration, só é preciso digitar o comando Update-Database com os parâmetros corretos.