Upload
rafael-leonhardt
View
1.252
Download
0
Embed Size (px)
DESCRIPTION
Palestra sobre Entity Framework Code First Migrations, realizada em Blumenau em 29/02/2012. www.rafaelleonhardt.com.br
Citation preview
Entity Framework Code FirstMigrations
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
Data Annotations Fluent API
Contexto de dados
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