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
Por que utilizar Migrations?
O que é o Migrations?
Instalação
Recursos disponíveis
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?
Simples.
Mas não é fácil.
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?
Por que utilizar Migrations?
O que é o Migrations?
Instalação
Recursos disponíveis
É 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?
“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?
O que é o Migrations?
O Migrations é
composto por
uma classe, um
snapshot e uma
tabela no banco
de dados.
• CLASSE
• SNAPSHOT
• REGISTRO BD
Por que utilizar Migrations?
O que é o Migrations?
Instalação
Recursos disponíveis
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.
Por que utilizar Migrations?
O que é o Migrations?
Instalação
Recursos disponíveis
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”
Recursos disponíveis
Atualiza o banco de dados
Aplica a migração no BD sem escrever SQL.
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.
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
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
*
*
Recursos disponíveis
Gerar Scripts
Gera scripts para aplicar uma mudança em outro ambiente ou gerar um pacote.
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
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
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
DÚVIDAS ?
DEIXEM NOS
COMENTÁRIO
S
caiolorensetti@gmail.com

Migrations com Entity Framework Core

  • 1.
    Migrations com Entity FrameworkCORE Caio César Lorensetti ANALISTA SÊNIOR - MICROSOFT .NET C# Cosin Consulting linked by Isobar FULLSTACK DEVELOPER @caiolorensetti caiolorensetti@gmail.com
  • 2.
    Por que utilizarMigrations? O que é o Migrations? Instalação Recursos disponíveis
  • 3.
    Por que osprogramadores 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?
  • 4.
  • 5.
    Por que osprogramadores 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 utilizarMigrations? O que é o Migrations? Instalação Recursos disponíveis
  • 7.
    É uma ferramentaque 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 EntityFramework é 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 utilizarMigrations? O que é o Migrations? Instalação Recursos disponíveis
  • 11.
    Instalação ASP.NET Core 2.1+ Incluso! dotnetadd package Microsoft.EntityFrameworkCore.Design Qualquer coisa além disso, só é necessário adicionar o pacote abaixo usando Nuget.
  • 12.
    Por que utilizarMigrations? O que é o Migrations? Instalação Recursos disponíveis
  • 13.
    Recursos disponíveis Criar umMigration 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”
  • 14.
    Recursos disponíveis Atualiza obanco de dados Aplica a migração no BD sem escrever SQL.
  • 15.
    Recursos disponíveis Programar aclasse 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 umMigration 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 umMigration 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 * *
  • 18.
    Recursos disponíveis Gerar Scripts Gerascripts para aplicar uma mudança em outro ambiente ou gerar um pacote.
  • 19.
    Recursos disponíveis Gerar Scripts dotnetef 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 dotnetef 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 dotnetef 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
  • 22.