DEV Community

Yuri Peixinho
Yuri Peixinho

Posted on

Migrações com EF Core

As modelagens de dados mudam de acordo com os recursos e novas funcionalidades do projeto, ou seja, quando novas entidades ou propriedades são adicionadas ou removidas o Schema de bancos de dados tem que ficar em plena sincronia com o aplicativo.

Para isso, o EF Core disponibiliza um recurso de migração o Schema do banco de modo que preserve os dados dentro desse banco.

Como funciona?

Quando uma alteração de modelo de dados é feita o desenvolvedor pode gerar a migração descrevendo as alterações necessárias para a sincronia do banco.

O próprio EF Core compara o modelo atual e o antigo para gerar os arquivos de migração, que pode ser acompanhado dentro do código fonte do próprio projeto.

Criando a primeira migração

No Packager Manager Console, digite:

Add-Migration [Nome]
Enter fullscreen mode Exit fullscreen mode

A partir disso, você pode fazer que o EF Core crie o seu banco de dados e schemas a partir do arquivo gerado

Update-Database
Enter fullscreen mode Exit fullscreen mode

Criando novas migrações

Certo, agora imagine que seu projeto evoluiu e você implementou diversos atributos e entidades no seu projeto. Então o seu models do backend e o banco de dados estão fora de sincronia. Para sincronizar então é necessário subir uma nova migração.

Add-Migration [Nome]
Enter fullscreen mode Exit fullscreen mode

E para aplicar essa migração, é necessário atualizar o banco de dados.

Update-Database
Enter fullscreen mode Exit fullscreen mode

Aplicando isso, o nosso EF Core já entende que existe uma tabela aplicada anteriormente, já que esse fato é registrado na tabela de migrações.

Reverter migração

Para reverter uma migração no Entity Framework Core, você pode usar o comando dotnet ef database update seguido pelo nome da migração anterior (ou o valor 0 para voltar ao estado inicial, sem migrações aplicadas).

Reverter para uma migração específica:
Se quiser reverter para uma migração específica, basta passar o nome da migração desejada:

Update-Database NomeDaMigracao
Enter fullscreen mode Exit fullscreen mode

Reverter todas as migrações (voltar ao estado inicial):
Para remover todas as migrações aplicadas ao banco de dados, use 0 como parâmetro:

Update-Database 0
Enter fullscreen mode Exit fullscreen mode

Remover migração

Depois de reverter o banco de dados, você pode remover a migração do projeto com o comando:

Remove-Migration
Enter fullscreen mode Exit fullscreen mode

Top comments (0)