Migrations

De MSTECH wiki
Ir para: navegação, pesquisa

Para criar a tabela no Banco de dados através do seu modelo(<classe>.cs) criado, deverá ser utilizado o Entity Framework Migration.

No Visual Studio, vá em "Tools >> Nuget Package Manager >> Package Manager Console" selecionar o Projeto que contém os dados do seu Entity Framework, que no nosso caso é o Projeto “CoreEdu.Entities”. (No Atribuicoes é o AtribuicaoAulas.Repository.EntityFramework)

//Se o seu projeto ainda não estiver habilitado para usar o EF Migration deverá executar o comando abaixo (No nosso caso já está habilitado). -Enable-Migrations

//Para verificar a difirença entre o seu banco de dados e suas classes de Modelo, executar o comando abaixo. -Add-Migration TesteMigra -Force

//Para aplicar as mudanças para o banco de dados, do arquivo gerado do comando anterior, executar o comando abaixo. -Update-Database –Verbose –TargetMigration: TesteMigra

//Aplicar um ou mais script(s) que está entre dois scripts em períodos anteriores -Update-Database –Verbose -SourceMigration: NOME_SCRIPT_INICIAL(1) –TargetMigration: NOME_SCRIPT_FINAL

//Visualizar a diferença entre um ou mais script(s) que está entre dois scripts em períodos anteriores //(Adiciona-se "-Script") -Update-Database -Script –Verbose -SourceMigration: NOME_SCRIPT_INICIAL(1) –TargetMigration: NOME_SCRIPT_FINAL

OBS: (1)- Para o NOME_SCRIPT_INICIAL, deverá ser informado o nome do script anterior ao o que você deseja executar.


Outros exemplos -Criar unique Index modelBuilder

   .Entity<User>() 
   .Property(t => t.FirstName) 
   .IsRequired()
   .HasMaxLength(60)
   .HasColumnAnnotation(
       IndexAnnotation.AnnotationName, 
       new IndexAnnotation(
           new IndexAttribute("IX_FirstNameLastName", 1) { IsUnique = true }));

modelBuilder

   .Entity<User>() 
   .Property(t => t.LastName) 
   .IsRequired()
   .HasMaxLength(60)
   .HasColumnAnnotation(
       IndexAnnotation.AnnotationName, 
       new IndexAnnotation(
           new IndexAttribute("IX_FirstNameLastName", 2) { IsUnique = true }));

-Campo autoincremento ToTable("Place", "dbo");

       HasKey(p => p.PlaceId);   
       Property(p => p.PlaceId)
           .HasColumnName("PlaceId")
           .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);