SlideShare uma empresa Scribd logo
1 de 16
Entity Framework
Code First
Migrations

Rafael Leonhardt
Twitter: @MumHaBR

Blog: www.rafaelleonhardt.com.br

Grupo: www.bludotnet.com.br
Como vocês controlam o BD?




Como vocês gerenciam alterações de estrutura de base?
Ruby on Rails Migrations

     Migrations are a convenient way for you
           to alter your database in a
       structured and organized manner.

       You could edit fragments of SQL by hand but
         you would then be responsible for telling
   other developers that they need to go and run them.
          You’d also have to keep track of which
      changes need to be run against the production
             machines next time you deploy.

            Fonte: http://guides.rubyonrails.org/migrations.html
EF – o que vêm primeiro?
Entity Framework Code First
                 Contexto de dados




  Data Annotations                   Fluent API
Migrations na prática
Demo: NuGet - EntityFramework




         http://nuget.org/packages/entityframework
Demo: Primeira migração

• Enable-Migrations
   – Configuration

• Adicionar classe da entidade País

• Adicionar classe de contexto

• Add-Migration Paises
   – migration paises.cs

• Update-Database
Demo: Segunda migração


• Adicionar classe da entidade Estado

• Add-Migration Estados
  – migration estados.cs
     • Foreign-Key


• Update-Database
Demo: alterando a migração

• Downgrade -TargetMigration

• Adicionar um índice à tabela de Estados
  – .Index(t => t.Nome, unique: true);

• Executar um comando SQL diretamente
  – Sql("UPDATE ESTADOS SET SIGLA = 'SC' WHERE NOME =
    'Santa Catarina'");

• Update-database
Demo: outras opções
• Parâmetros
  –   -Script
  –   -Verbose
  –   -ConnectionStringName
  –   -TargetMigration:$InitialDatabase
  –   -Force

• Configuração:
  – AutomaticMigrationsEnabled = true;

• Powershell:
  – migrate.exe
Customizando o Migrations
• CSharpMigrationCodeGenerator
• MigrationSqlGenerator
Alguns problemas...
• Renomear tabela
  – Gerou código para criar a tabela com o novo nome
  – Gerou código para excluir a tabela velha mas com o nome novo
     • Resultado: Excluiu a tabela recém criada

• Sql Azure Federation
  – Separa a estrutura de dados em vários databases
  – Antes de aplicar a migração precisa dizer qual federação usar.
      • Solução temporária: gerar um script sql e incluir na mão o federation

• Gerar o sql de muitas migrações
  – Não gerou na ordem correta.
  – Não avaliei se foi corrigido na versão 4.3.0 do EF.
Dúvidas
Referências

• Meu blog
  – www.rafaelleonhardt.com.br
     • Introdução ao Entity Framework Code First Migrations
     • Data-Tier Applications X Code First Migrations
     • Entity Framework: primeiro Database, Modelo ou Código

• ADO Team Blog
  – http://blogs.msdn.com/b/adonet/
     • EF 4.3 Released
     • EF 4.3 Code-Based Migrations Walkthrough
     • EF 4.3 Automatic Migrations Walkthrough
Obrigado!




              www.rafaelleonhardt.com.br


            www.rafaelleonhardt.com.br
                  @MumHaBR

Mais conteúdo relacionado

Semelhante a EF Code First Migrations: gerenciando alterações no banco de dados

Entity Framework 5 & Migrations
Entity Framework 5 & MigrationsEntity Framework 5 & Migrations
Entity Framework 5 & MigrationsWaldyr Felix
 
Migrations com Entity Framework Core
Migrations com Entity Framework CoreMigrations com Entity Framework Core
Migrations com Entity Framework CoreCaio Lorensetti
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosRodolfo Fadino Junior
 
Ninja Migrations Entity Framework
Ninja Migrations Entity FrameworkNinja Migrations Entity Framework
Ninja Migrations Entity FrameworkiMasters
 
Desenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endDesenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endGiovanny Valente
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
 
Deep Dive sobre Entity Framework
Deep Dive sobre Entity FrameworkDeep Dive sobre Entity Framework
Deep Dive sobre Entity FrameworkLuciano Condé
 
Migrando Aplicações para o SQL Azure Database
Migrando Aplicações para o SQL Azure DatabaseMigrando Aplicações para o SQL Azure Database
Migrando Aplicações para o SQL Azure DatabaseRoberto Fonseca
 
Programação em Camadas com Entity Framework 4
Programação em Camadas com Entity Framework 4Programação em Camadas com Entity Framework 4
Programação em Camadas com Entity Framework 4Luciano Condé
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
Comparacao Estrategica sobre as Tecnologias de Acesso a Dados da Microsoft
Comparacao Estrategica sobre as Tecnologias de Acesso a Dados da MicrosoftComparacao Estrategica sobre as Tecnologias de Acesso a Dados da Microsoft
Comparacao Estrategica sobre as Tecnologias de Acesso a Dados da MicrosoftLuciano Condé
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfJ0071
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Vinícius de Paula
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com AngularElmano Cavalcanti
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureFabrício Lopes Sanchez
 

Semelhante a EF Code First Migrations: gerenciando alterações no banco de dados (20)

Entity Framework 5 & Migrations
Entity Framework 5 & MigrationsEntity Framework 5 & Migrations
Entity Framework 5 & Migrations
 
Migrations com Entity Framework Core
Migrations com Entity Framework CoreMigrations com Entity Framework Core
Migrations com Entity Framework Core
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
 
Ninja Migrations Entity Framework
Ninja Migrations Entity FrameworkNinja Migrations Entity Framework
Ninja Migrations Entity Framework
 
Desenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endDesenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-end
 
Entity Framework 7
Entity Framework 7Entity Framework 7
Entity Framework 7
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Deep Dive sobre Entity Framework
Deep Dive sobre Entity FrameworkDeep Dive sobre Entity Framework
Deep Dive sobre Entity Framework
 
Migrando Aplicações para o SQL Azure Database
Migrando Aplicações para o SQL Azure DatabaseMigrando Aplicações para o SQL Azure Database
Migrando Aplicações para o SQL Azure Database
 
Programação em Camadas com Entity Framework 4
Programação em Camadas com Entity Framework 4Programação em Camadas com Entity Framework 4
Programação em Camadas com Entity Framework 4
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
Comparacao Estrategica sobre as Tecnologias de Acesso a Dados da Microsoft
Comparacao Estrategica sobre as Tecnologias de Acesso a Dados da MicrosoftComparacao Estrategica sobre as Tecnologias de Acesso a Dados da Microsoft
Comparacao Estrategica sobre as Tecnologias de Acesso a Dados da Microsoft
 
Cloudformation
CloudformationCloudformation
Cloudformation
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdf
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
 
Tutorial struts
Tutorial strutsTutorial struts
Tutorial struts
 
De 0 a DevOps
De 0 a DevOpsDe 0 a DevOps
De 0 a DevOps
 

EF Code First Migrations: gerenciando alterações no banco de dados

  • 1. Entity Framework Code First Migrations Rafael Leonhardt Twitter: @MumHaBR Blog: www.rafaelleonhardt.com.br Grupo: www.bludotnet.com.br
  • 2. Como vocês controlam o BD? Como vocês gerenciam alterações de estrutura de base?
  • 3. Ruby on Rails Migrations Migrations are a convenient way for you to alter your database in a structured and organized manner. You could edit fragments of SQL by hand but you would then be responsible for telling other developers that they need to go and run them. You’d also have to keep track of which changes need to be run against the production machines next time you deploy. Fonte: http://guides.rubyonrails.org/migrations.html
  • 4. EF – o que vêm primeiro?
  • 5. Entity Framework Code First Contexto de dados Data Annotations Fluent API
  • 7. Demo: NuGet - EntityFramework http://nuget.org/packages/entityframework
  • 8. Demo: Primeira migração • Enable-Migrations – Configuration • Adicionar classe da entidade País • Adicionar classe de contexto • Add-Migration Paises – migration paises.cs • Update-Database
  • 9. Demo: Segunda migração • Adicionar classe da entidade Estado • Add-Migration Estados – migration estados.cs • Foreign-Key • Update-Database
  • 10. Demo: alterando a migração • Downgrade -TargetMigration • Adicionar um índice à tabela de Estados – .Index(t => t.Nome, unique: true); • Executar um comando SQL diretamente – Sql("UPDATE ESTADOS SET SIGLA = 'SC' WHERE NOME = 'Santa Catarina'"); • Update-database
  • 11. Demo: outras opções • Parâmetros – -Script – -Verbose – -ConnectionStringName – -TargetMigration:$InitialDatabase – -Force • Configuração: – AutomaticMigrationsEnabled = true; • Powershell: – migrate.exe
  • 12. Customizando o Migrations • CSharpMigrationCodeGenerator • MigrationSqlGenerator
  • 13. Alguns problemas... • Renomear tabela – Gerou código para criar a tabela com o novo nome – Gerou código para excluir a tabela velha mas com o nome novo • Resultado: Excluiu a tabela recém criada • Sql Azure Federation – Separa a estrutura de dados em vários databases – Antes de aplicar a migração precisa dizer qual federação usar. • Solução temporária: gerar um script sql e incluir na mão o federation • Gerar o sql de muitas migrações – Não gerou na ordem correta. – Não avaliei se foi corrigido na versão 4.3.0 do EF.
  • 15. Referências • Meu blog – www.rafaelleonhardt.com.br • Introdução ao Entity Framework Code First Migrations • Data-Tier Applications X Code First Migrations • Entity Framework: primeiro Database, Modelo ou Código • ADO Team Blog – http://blogs.msdn.com/b/adonet/ • EF 4.3 Released • EF 4.3 Code-Based Migrations Walkthrough • EF 4.3 Automatic Migrations Walkthrough
  • 16. Obrigado! www.rafaelleonhardt.com.br www.rafaelleonhardt.com.br @MumHaBR

Notas do Editor

  1. Fonte da imagem: http://www.red-gate.com/products/sql-development/sql-developer-bundle/learn-more/improving-developmentPerguntar: Vocês como desenvolvedor, como vocês garantem que um campo novo irá ser criado na base do cliente em uma atualização de sistema? Quais são as preocupações com este processo?E quando tem mais de um programador desenvolvendo?Quais as preocupações em relação ao banco de dados durante o desenvolvimento e manutenção de um aplicativo?Alteracao de campo, precisa ir pro clienteCriacao de chaves, indice, etcCriacao de tabela.Levar um sistema na versao 2 para a versao 5. Quais alteracoes precisam ser aplicadas na base.