SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

Desktop App Converter: Trazendo Apps Win32 para a Windows Store
Desktop App Converter: Trazendo Apps Win32 para a Windows StoreDesktop App Converter: Trazendo Apps Win32 para a Windows Store
Desktop App Converter: Trazendo Apps Win32 para a Windows StoreIgor Abade
 
6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe muniz6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe munizMatheus de Lara Calache
 
Gerenciando projetos através do VSTS(Visual Studio Team Services)
Gerenciando projetos através do VSTS(Visual Studio Team Services)Gerenciando projetos através do VSTS(Visual Studio Team Services)
Gerenciando projetos através do VSTS(Visual Studio Team Services)Pablo Juan ஃ
 
Da Integração à Entrega Contínua
Da Integração à Entrega ContínuaDa Integração à Entrega Contínua
Da Integração à Entrega ContínuaMarlon Bernardes
 
Integracao Continua em projetos .NET
Integracao Continua em projetos .NETIntegracao Continua em projetos .NET
Integracao Continua em projetos .NETLuthiano Vasconcelos
 
.NET Core Internals. O que é o .NET Platform Standard?
.NET Core Internals. O que é o .NET Platform Standard?.NET Core Internals. O que é o .NET Platform Standard?
.NET Core Internals. O que é o .NET Platform Standard?Victor Cavalcante
 

Mais procurados (8)

Desktop App Converter: Trazendo Apps Win32 para a Windows Store
Desktop App Converter: Trazendo Apps Win32 para a Windows StoreDesktop App Converter: Trazendo Apps Win32 para a Windows Store
Desktop App Converter: Trazendo Apps Win32 para a Windows Store
 
6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe muniz6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe muniz
 
Gerenciando projetos através do VSTS(Visual Studio Team Services)
Gerenciando projetos através do VSTS(Visual Studio Team Services)Gerenciando projetos através do VSTS(Visual Studio Team Services)
Gerenciando projetos através do VSTS(Visual Studio Team Services)
 
Da Integração à Entrega Contínua
Da Integração à Entrega ContínuaDa Integração à Entrega Contínua
Da Integração à Entrega Contínua
 
Continuous Delivery e DevOps
Continuous Delivery e DevOpsContinuous Delivery e DevOps
Continuous Delivery e DevOps
 
Integracao Continua em projetos .NET
Integracao Continua em projetos .NETIntegracao Continua em projetos .NET
Integracao Continua em projetos .NET
 
.NET Core Internals. O que é o .NET Platform Standard?
.NET Core Internals. O que é o .NET Platform Standard?.NET Core Internals. O que é o .NET Platform Standard?
.NET Core Internals. O que é o .NET Platform Standard?
 
Continuous Deployment
Continuous DeploymentContinuous Deployment
Continuous Deployment
 

Semelhante a Migrations com Entity Framework Core

Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Eric Gallardo
 
Construindo Aplicações PHP com Twelve-Factor App
Construindo Aplicações PHP com Twelve-Factor AppConstruindo Aplicações PHP com Twelve-Factor App
Construindo Aplicações PHP com Twelve-Factor AppMarcela Godoy Cruz
 
DevOps - melhores práticas e integração contínua
DevOps - melhores práticas e integração contínuaDevOps - melhores práticas e integração contínua
DevOps - melhores práticas e integração contínuaAmazon Web Services LATAM
 
Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Ramon Durães
 
Deep Dive sobre Entity Framework
Deep Dive sobre Entity FrameworkDeep Dive sobre Entity Framework
Deep Dive sobre Entity FrameworkLuciano Condé
 
Primeiros passos com o framework Sencha Ext JS
Primeiros passos com o framework Sencha Ext JSPrimeiros passos com o framework Sencha Ext JS
Primeiros passos com o framework Sencha Ext JSWemerson Januario
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemRodrigo Valerio
 
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...Lenin Abadie
 
GABC 2018 - Hands-On: DevOps, CI e CD
GABC 2018 - Hands-On: DevOps, CI e CDGABC 2018 - Hands-On: DevOps, CI e CD
GABC 2018 - Hands-On: DevOps, CI e CDJaqueline Ramos
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
 
Team Foundation Server
Team Foundation ServerTeam Foundation Server
Team Foundation ServerMaira Iantas
 
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / GoiâniaAzure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / GoiâniaRodrigo Marques Teixeira
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHPFlávio Lisboa
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsJosé Alexandre Macedo
 
Criando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMindCriando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMindJaydson Gomes
 
TDC 2019 Cloud - Liberte sua arquitetura com cloud native
TDC 2019 Cloud - Liberte sua arquitetura com cloud nativeTDC 2019 Cloud - Liberte sua arquitetura com cloud native
TDC 2019 Cloud - Liberte sua arquitetura com cloud nativeAndré Paulovich
 
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)Giovanni Bassi
 

Semelhante a Migrations com Entity Framework Core (20)

Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
Construindo Aplicações PHP com Twelve-Factor App
Construindo Aplicações PHP com Twelve-Factor AppConstruindo Aplicações PHP com Twelve-Factor App
Construindo Aplicações PHP com Twelve-Factor App
 
DevOps - melhores práticas e integração contínua
DevOps - melhores práticas e integração contínuaDevOps - melhores práticas e integração contínua
DevOps - melhores práticas e integração contínua
 
Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016
 
Deep Dive sobre Entity Framework
Deep Dive sobre Entity FrameworkDeep Dive sobre Entity Framework
Deep Dive sobre Entity Framework
 
Primeiros passos com o framework Sencha Ext JS
Primeiros passos com o framework Sencha Ext JSPrimeiros passos com o framework Sencha Ext JS
Primeiros passos com o framework Sencha Ext JS
 
Continuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na NuvemContinuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na Nuvem
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvem
 
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
 
GABC 2018 - Hands-On: DevOps, CI e CD
GABC 2018 - Hands-On: DevOps, CI e CDGABC 2018 - Hands-On: DevOps, CI e CD
GABC 2018 - Hands-On: DevOps, CI e CD
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Team Foundation Server
Team Foundation ServerTeam Foundation Server
Team Foundation Server
 
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / GoiâniaAzure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHP
 
Sql Server
Sql ServerSql Server
Sql Server
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Criando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMindCriando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMind
 
TDC 2019 Cloud - Liberte sua arquitetura com cloud native
TDC 2019 Cloud - Liberte sua arquitetura com cloud nativeTDC 2019 Cloud - Liberte sua arquitetura com cloud native
TDC 2019 Cloud - Liberte sua arquitetura com cloud native
 
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
 
Falando sobre DevOps no azure
Falando sobre DevOps no azureFalando sobre DevOps no azure
Falando sobre DevOps no azure
 

Migrations com Entity Framework Core

  • 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”
  • 14. Recursos disponíveis Atualiza o banco de dados Aplica a migração no BD sem escrever SQL.
  • 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 * *
  • 18. Recursos disponíveis Gerar Scripts Gera scripts para aplicar uma mudança em outro ambiente ou gerar um pacote.
  • 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