EF
Core - Apresentando e usando o Migrations - III
![]() |
Hoje vamos continuar a série de artigos que apresenta o Migrations e seus principais recursos. |
Continuando o artigo anterior veremos como podemos criar a migração se os arquivos das entidades e do contexto estiverem em um projeto separado.
Até o momento estamos aplicando as migrações e temos os arquivos das entidades e do contexto no mesmo projeto, inclusive na mesma pasta Models.
Em muitos projetos podemos ter os arquivos das entidades e do contexto em um projeto diferente.
Neste cenário como podemos aplicar as Migrações que estamos fazendo ?
Vamos mostrar isso na prática.
Vamos abrir o projeto e incluir um novo projeto chamado Entidades do tipo Class Library (.NET Core) usando o menu File -> Add -> New Project;
Vamos criar uma pasta Models neste projeto e remover o arquivo Class1.cs criado por padrão.
Agora precisamos incluir dois pacotes do Entity Framework neste projeto:
A seguir vamos incluir uma referência no projeto AspNet_EFCoreApi ao projeto Entidades que acabamos de criar.
No menu Project-> Add Project Reference, marque o projeto Entidades e clique em OK;
Agora vamos mover os arquivos das entidades e do contexto da pasta Models do projeto AspNet_EFCoreApi para a pasta Models do projeto Entidades.
Ao final a estrutura da solução deverá estar da seguinte forma:
Agora temos que alterar o namespaces usados nos arquivos Aluno e AppDbContext para Entidades.Models.
Vamos ter que repetir esse procedimento no arquivo Startup.cs e nos arquivos de Migração criados no projeto AspNet_EFCoreApi (São os arquivos *.Designer.cs), e, teremos que remover o namespace AspNet_EFCoreApi.Models.
Após isso vamos dar um Build na Solution e ver se não existem erros.
Não havendo erros vamos tentar aplicar uma nova migração digitando:
add-migration TesteMigracaoProjetoSeparado
Observe que estamos obtendo um erro que informa que o projeto AspNet_EFCoreApi não coincide com o assembly 'Entidades'.
Teremos que mudar o nosso assembly das Migrations de Entidades para AspNet_EFCoreApi usando o método MigrationsAssembly que configura o assembly onde as migrações serão mantidas:
Para fazer isso vamos abrir o arquivo Startup do projeto AspNet_EFCoreApi e incluir o código abaixo:
public void ConfigureServices(IServiceCollection services) { services.AddDbContext<AppDbContext>( options => options. UseSqlServer(Configuration.GetConnectionString("DefaultConnection"), options=>options.MigrationsAssembly("AspNet_EFCoreApi"))); services.AddControllers();
}
|
Após isso vamos repetir o comando para incluir a nova migração:
Agora a migração foi criada com sucesso na pasta Migrations do projeto AspNet_EFCoreApi:
Como era apenas um teste podemos remover essa migração usando : remove-migration
Pegue o projeto
aqui :
AlunosWeb_3.zip (sem as referências)
"E a paz de Deus, que excede todo o entendimento, guardará
os vossos corações e os vossos pensamentos em Cristo Jesus."
Filipenses 4:7
Referências: