Entity Framework Code First                      &                  MigrationsWaldyr FelixALM Ranger / Arquiteto de softwa...
Entity Framework 5•   Possibilidade de fazer tudo via código•   Mais produtividade•   Criação simplificada do DbContext•  ...
Como funciona o Code First• Enquanto os outros métodos geram meta  dados em memória a partir do EDMX  – XML -> EntityType,...
Convenções do Code First                            Chave Primária definida como “Id”                                     ...
Instalando o Code First1. Opção: via download no site  – http://msdn.com/data/ef  – Baixar e instalar  – Referenciar DLL n...
Demo: Primeiros passos1.   Criando as Entidades2.   Criando o DbContext3.   Gerenciando o contexto4.   Gerando o banco de ...
Porque configurar mapeamentos?• Quando as convenções não atendem aos  requisitos  – Acontece frequentemente por sinal  – E...
Tipos de mapeamentos  Data Annotations           Fluent API• Usa atributos nas        • Usa métodos  classes e propriedade...
Demo: Configurando com Fluent API1.   Definindo tamanho máximo2.   Definindo campos obrigatórios (not null)3.   Definindo ...
Relacionamentos 1..1One-to-one
Relacionamentos 1..NOne-to-many
Relacionamentos N..NMany-to-many
Separando as configurações• Quanto mais entidades tiver meu projeto  maior e mais confuso vai ficar meu  OnModelCreating• ...
Demo: Definindo configurações de                entidades1.   Criando classes de configuração2.   Realizando as configuraç...
Estratégias de criação da base• É possivel modificar a forma como o EF cria o  banco de dados através da classe Database• ...
Demo: Configurando a inicialização1. Criando inicialização da base2. Customizando inicialização da base3. Visualizando dad...
PROBLEMA• Qualquer alteração envolve recriação inteira  da base de dados• Inviável para usar em ambientes de produção
Começando com Migrations• Através do console do NuGet é possível  executar comandos para o EF para  habilitar o uso do Mig...
Começando com Migrations• Também é possível habilitar migrações  automáticas, da seguinte formaPM> Enable-Migrations -Enab...
Demo habilitando Migrations1. Habilitando Migrations em um modelo já   existente2. Visualizando alterações no projeto3. Ex...
Comandos• Existem basicamente dois comandos que  podem ser usados:  – Add-Migration: que irá procurar pelas    modificaçõe...
Adicionando uma nova Migration• O formato do comando:  – Comando + nome da migration PM> Add-Migration Add-Produto-DataDeC...
Aplicando atualizações no banco• Formato do comando:  – Comando + parâmetros (opcional)              PM> Update-Database
Demo comandos1. Criando mais uma propriedade no   modelo2. Aplicar as alterações automaticamente3. Criando uma nova Migrat...
Upgrade/Downgrade• Upgrade é feito quase que automaticamente• Mas é possível aplicar uma versão anterior  (downgrade)• Par...
Fazendo Downgrade  PM> Update-Database –TargetMigration:“Migration" –Force                            ouPM> Update-Databas...
Demo downgrade do banco1. Downgrade para uma migration2. Restaurando a base para o estado original3. Voltando para versão ...
Gerando Scripts• Além de aplicar automaticamente as  alterações, é possível gerar o script dos  mesmos• Para isso basta mo...
Gerando Scripts            PM> Update-Database -Script                             ouPM> Update-Database –Script –SourceMi...
Demo gerando scripts1. Gerando um script com todas as alterações   de migração2. Gerando um script específico para uma   v...
Automatizando a migração• É possível automatizar o upgrade da aplicação  com migrations• Para isso usamos o esquema de ini...
Duvidas?Blog: waldyrfelix.net/blogTwitter: @WaldyrFelixEmail: waldyrfelix@2pc.com.br                        Obrigado
Próximos SlideShares
Carregando em…5
×

Entity Framework 5 & Migrations

4.059 visualizações

Publicada em

Publicada em: Tecnologia
  • Seja o primeiro a comentar

Entity Framework 5 & Migrations

  1. 1. Entity Framework Code First & MigrationsWaldyr FelixALM Ranger / Arquiteto de softwarewaldyrfelix@2pc.com.brwaldyrfelix.net/blog@WaldyrFelix
  2. 2. Entity Framework 5• Possibilidade de fazer tudo via código• Mais produtividade• Criação simplificada do DbContext• Entidades limpas• Geração automática do banco de dados• Migrations• Suporte a Enums
  3. 3. Como funciona o Code First• Enquanto os outros métodos geram meta dados em memória a partir do EDMX – XML -> EntityType, AssociationType, EdmType, etc• Code First gera os mesmos meta dados a partir do código – Classes -> EntityType, AssociationType, EdmType, Database, etc• Para isso o EF Code First usa Data Annotations e/ou Fluent API
  4. 4. Convenções do Code First Chave Primária definida como “Id” ou “CategoryId”Relacionamento é inferido
  5. 5. Instalando o Code First1. Opção: via download no site – http://msdn.com/data/ef – Baixar e instalar – Referenciar DLL no projeto2. Opção: via NuGet – PM> Install-Package EntityFramework – E só...
  6. 6. Demo: Primeiros passos1. Criando as Entidades2. Criando o DbContext3. Gerenciando o contexto4. Gerando o banco de dados
  7. 7. Porque configurar mapeamentos?• Quando as convenções não atendem aos requisitos – Acontece frequentemente por sinal – Exemplo: string mapeado para nvarchar(max)• Melhorar performance do banco• Mudar tipos de dados que precisamos usar
  8. 8. Tipos de mapeamentos Data Annotations Fluent API• Usa atributos nas • Usa métodos classes e propriedades encadeados fora das• “Suja” o model com entidades metadados • Necessário mais código
  9. 9. Demo: Configurando com Fluent API1. Definindo tamanho máximo2. Definindo campos obrigatórios (not null)3. Definindo nome da tabela e colunas4. Definindo tipo das colunas5. Usando tipos complexos
  10. 10. Relacionamentos 1..1One-to-one
  11. 11. Relacionamentos 1..NOne-to-many
  12. 12. Relacionamentos N..NMany-to-many
  13. 13. Separando as configurações• Quanto mais entidades tiver meu projeto maior e mais confuso vai ficar meu OnModelCreating• Solução: Criar configurações específicas de cada entidade em sua própria classe de configuração – Deve herdar de EntityTypeConfiguration – As configurações passam para o construtor dessa classe
  14. 14. Demo: Definindo configurações de entidades1. Criando classes de configuração2. Realizando as configurações3. Deixando as configurações visiveis ao EF4. Configurando o relacionamento
  15. 15. Estratégias de criação da base• É possivel modificar a forma como o EF cria o banco de dados através da classe Database• Os métodos possiveis são: – DropCreateDatabaseAlways – CreateDatabaseIfNotExists – DropCreateDatabaseIfModelChangesDatabase.SetInitializer( new DropCreateDatabaseIfModelChanges<DemoContext>());
  16. 16. Demo: Configurando a inicialização1. Criando inicialização da base2. Customizando inicialização da base3. Visualizando dados criados na base
  17. 17. PROBLEMA• Qualquer alteração envolve recriação inteira da base de dados• Inviável para usar em ambientes de produção
  18. 18. Começando com Migrations• Através do console do NuGet é possível executar comandos para o EF para habilitar o uso do Migrations PM> Enable-Migrations
  19. 19. Começando com Migrations• Também é possível habilitar migrações automáticas, da seguinte formaPM> Enable-Migrations -EnableAutomaticMigrations
  20. 20. Demo habilitando Migrations1. Habilitando Migrations em um modelo já existente2. Visualizando alterações no projeto3. Explorando o Migrations
  21. 21. Comandos• Existem basicamente dois comandos que podem ser usados: – Add-Migration: que irá procurar pelas modificações realizadas até então e adicionar uma nova migration – Update-Database: aplica as alterações pendentes no banco de dados, a partir das migrations já adicionadas ou infere as alterações automaticamente
  22. 22. Adicionando uma nova Migration• O formato do comando: – Comando + nome da migration PM> Add-Migration Add-Produto-DataDeCriacao
  23. 23. Aplicando atualizações no banco• Formato do comando: – Comando + parâmetros (opcional) PM> Update-Database
  24. 24. Demo comandos1. Criando mais uma propriedade no modelo2. Aplicar as alterações automaticamente3. Criando uma nova Migration4. Aplicando as alterações a partir dessa nova Migration
  25. 25. Upgrade/Downgrade• Upgrade é feito quase que automaticamente• Mas é possível aplicar uma versão anterior (downgrade)• Para isso existem parâmetros especiais que podem ser usados – TargetMigration: indica para qual migration a base deve atualizar – Force: indica que mesmo havendo perda de dados o comando deve ser executado
  26. 26. Fazendo Downgrade PM> Update-Database –TargetMigration:“Migration" –Force ouPM> Update-Database –TargetMigration: $InitialDatabase –Force
  27. 27. Demo downgrade do banco1. Downgrade para uma migration2. Restaurando a base para o estado original3. Voltando para versão atual
  28. 28. Gerando Scripts• Além de aplicar automaticamente as alterações, é possível gerar o script dos mesmos• Para isso basta modificar o comando adicionando um novo parâmetro -Script
  29. 29. Gerando Scripts PM> Update-Database -Script ouPM> Update-Database –Script –SourceMigration:$InitialDatabase
  30. 30. Demo gerando scripts1. Gerando um script com todas as alterações de migração2. Gerando um script específico para uma versão
  31. 31. Automatizando a migração• É possível automatizar o upgrade da aplicação com migrations• Para isso usamos o esquema de inicialização da baseDatabase.SetInitializer(new MigrateDatabaseToLatestVersion<Context, Configuration>());
  32. 32. Duvidas?Blog: waldyrfelix.net/blogTwitter: @WaldyrFelixEmail: waldyrfelix@2pc.com.br Obrigado

×