1. Migrations com Entity
Framework CORE
Caio César Lorensetti
ANALISTA SÊNIOR - MICROSOFT .NET C#
Cosin Consulting linked by Isobar
FULLSTACK DEVELOPER
@caiolorensetti
caiolorensetti@gmail.com
2. Por que utilizar Migrations?
O que é o Migrations?
Instalação
Recursos disponíveis
3. Por que os programadores gostam de linhas de comando para realizar tarefas corriqueiras?
É uma questão de Simplicidade vs Facilidade
Andar sob um cabo de aço esticado é simples!
Você precisa colocar um pé na frente do outro até
chegar ao outro lado.
Mas é fácil?
Por que utilizar Migrations?
5. Por que os programadores gostam de linhas de comando para realizar tarefas corriqueiras?
Ferramentas de linhas de comando são poderosas!
Quanto mais você utiliza mais fácil se tornam, e com isso
você tem mais poder e controle sob suas tarefas.
Por que utilizar Migrations?
6. Por que utilizar Migrations?
O que é o Migrations?
Instalação
Recursos disponíveis
7. É uma ferramenta que gera uma maneira de atualizar de forma incremental o esquema do
banco de dados. Gerenciando o versionamento através de arquivos no próprio projeto e um
histórico em uma tabela no banco.
• O Entity Framework tem uma ferramenta em linhas de comando para o programador realizar
atualização e rollback na estrutura do banco de dados, seguindo uma sequência lógica
• Com Migrations é possível ver facilmente e gerenciar a versão do banco de dados com base
num histórico das alterações, armazenadas no banco e na aplicação
• Quem escreve uma atualização para o banco também escreve seu rollback, e pode testar os
dois antes de ir para produção (responsabilidade)
• Simples de usar
• Documentação intuitiva dentro da própria ferramenta
• O Migrations está dentro da biblioteca do Entity Framework
O que é o Migrations?
8. “O Microsoft Entity Framework é uma ferramenta de
mapeamento objeto relacional (ORM – Object
Relational Management), que permite aos
desenvolvedores trabalhar com classes (entidades) que
correspondem a tabelas em um banco de dados,
tornando transparente o acesso a estes dados e
principalmente, eliminando a necessidade de escrever
código de banco de dados”
O que é o Migrations?
9. O que é o Migrations?
O Migrations é
composto por
uma classe, um
snapshot e uma
tabela no banco
de dados.
• CLASSE
• SNAPSHOT
• REGISTRO BD
10. Por que utilizar Migrations?
O que é o Migrations?
Instalação
Recursos disponíveis
11. Instalação
ASP.NET Core 2.1+
Incluso!
dotnet add package
Microsoft.EntityFrameworkCore.Design
Qualquer coisa além disso, só é necessário
adicionar o pacote abaixo usando Nuget.
12. Por que utilizar Migrations?
O que é o Migrations?
Instalação
Recursos disponíveis
13. Recursos disponíveis
Criar um Migration
Registra uma nova alteração que deve ser aplicada no banco de dados.
dotnet ef migrations add AddSloganToSupplier
Após uma alteração no mapeamento objeto relacional do
seu DB Context o comando “add” vai gerar uma nova
migração
O método “Up” adiciona uma coluna “Slogan” na tabela
“Suppliers”
O método “Down” exclui a coluna “Slogan” na tabela
“Suppliers”
15. Recursos disponíveis
Programar a classe Migrations
Você pode alterar a vontade os métodos Up e Down. Fazer verificações antes de realizar um
rollback pode ser uma boa ideia. Use com responsabilidade.
16. Recursos disponíveis
Reverter um Migration
Desfaz a alteração de um Migration, da rollback no BD.
dotnet ef database update 20181010151234_RemoveCurrencyEntity
Executa o Down de todos os Migrations posteriores
17. Recursos disponíveis
Remover um Migration
Exclui a classe, desfaz o snapshot.
Antes remover um migration lembre-se de fazer o seu revert no banco primeiro
Quando mudar para uma branch menos atualizada também não esqueça de reverter suas alterações
*
*
19. Recursos disponíveis
Gerar Scripts
dotnet ef migrations script -o C:scriptSuppliers.sql
OUTPUT
dotnet ef migrations script 20181022032509_AddSloganToSupplier -o C:scriptAddSloganToSupplier.sql
APENAS O MIGRATION NO PARÂMETRO
dotnet ef migrations script 20181010151234_RemoveCurrencyEntity 20181022032509_AddSloganToSupplier -o
C:scriptRemoveCurrencyEntity_AND_AddSloganToSupplier.sql
MIGRATION DAQUI ATÉ AQUI
POR DEFAULT A BASE TODA
20. Recursos disponíveis
Gerar Scripts
dotnet ef migrations script 20181022032509_AddSloganToSupplier 20181010151234_RemoveCurrencyEntity -o
C:scriptRevert_AddSloganToSupplier.sql
REVERTER DAQUI ATÉ AQUI
QUANDO INVERTIDO A ORDEM
GERA O ROLLBACK DE UM MIGRATION PARA O OUTRO
Para fazer rollback, revertendo atualizações
21. Recursos disponíveis
Gerar Scripts
Extras
dotnet ef migrations script -o C:scriptSuppliers.sql –u | --idempotent
PODE SER APLICADO PARA QUALQUER MIGRATION
VERIFICA SE O MIGRATION JÁ FOI APLICADO ANTES
dotnet ef database update 20181022032509_AddSloganToSupplier –c SuppliersContext
SELECIONA O CONTEXTO SE HOUVER MAIS DE UM
dotnet ef database update 20181022032509_AddSloganToSupplier –s .ApiSuppliers.Api.csproj
-p .DataSuppliers.Infra.csproj --no-build
SELECIONA O CONTEXTO SE HOUVER MAIS DE UM
O PROJETO QUE TEM A CLASSE “Startup.cs”
O PROJETO QUE TEM A CLASSE ONDE
ESTÁ O CONTEXTO
NÃO FAZ O BUILD ANTES DE RODAR