BluDotNet - Entity Framework Code First Migrations

16
Entity Framework Code First Migrations Rafael Leonhardt Twitter: @MumHaBR Blog: www.rafaelleonhardt.com.br Grupo: www.bludotnet.com.br

description

Palestra sobre Entity Framework Code First Migrations, realizada em Blumenau em 29/02/2012. www.rafaelleonhardt.com.br

Transcript of BluDotNet - Entity Framework Code First Migrations

Page 1: BluDotNet - Entity Framework Code First Migrations

Entity Framework Code FirstMigrations

Rafael Leonhardt

Twitter: @MumHaBR

Blog: www.rafaelleonhardt.com.br

Grupo: www.bludotnet.com.br

Page 2: BluDotNet - Entity Framework Code First Migrations

Como vocês controlam o BD?

Como vocês gerenciam alterações de estrutura de base?

Page 3: BluDotNet - Entity Framework Code First Migrations

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

Page 4: BluDotNet - Entity Framework Code First Migrations

EF – o que vêm primeiro?

Page 5: BluDotNet - Entity Framework Code First Migrations

Entity Framework Code First

Data Annotations Fluent API

Contexto de dados

Page 6: BluDotNet - Entity Framework Code First Migrations

Migrations na prática

Page 7: BluDotNet - Entity Framework Code First Migrations

Demo: NuGet - EntityFramework

http://nuget.org/packages/entityframework

Page 8: BluDotNet - Entity Framework Code First Migrations

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

Page 9: BluDotNet - Entity Framework Code First Migrations

Demo: Segunda migração

• Adicionar classe da entidade Estado

• Add-Migration Estados

– migration estados.cs

• Foreign-Key

• Update-Database

Page 10: BluDotNet - Entity Framework Code First Migrations

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

Page 11: BluDotNet - Entity Framework Code First Migrations

Demo: outras opções

• Parâmetros

– -Script

– -Verbose

– -ConnectionStringName

– -TargetMigration:$InitialDatabase

– -Force

• Configuração:

– AutomaticMigrationsEnabled = true;

• Powershell:

– migrate.exe

Page 12: BluDotNet - Entity Framework Code First Migrations

Customizando o Migrations

• CSharpMigrationCodeGenerator

• MigrationSqlGenerator

Page 13: BluDotNet - Entity Framework Code First Migrations

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.

Page 14: BluDotNet - Entity Framework Code First Migrations

Dúvidas

Page 15: BluDotNet - Entity Framework Code First Migrations

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

Page 16: BluDotNet - Entity Framework Code First Migrations

Obrigado!

www.rafaelleonhardt.com.br

www.rafaelleonhardt.com.br@MumHaBR