Usar um projeto de migrações separado
Pode ser interessante armazenar as migrações em um projeto diferente do que aquele que contém o DbContext
. Você também pode usar essa estratégia para manter vários conjuntos de migrações, por exemplo, um para desenvolvimento e outro para atualizações de versão para lançamento.
Dica
Veja o exemplo deste artigo no GitHub.
Etapas
Criar uma nova biblioteca de classes.
Adicione uma referência ao seu projeto de DbContext.
Mova as migrações e os arquivos de instantâneo de modelo para a biblioteca de classes.
Dica
Se você não tiver migrações existentes, gere uma no projeto que contém o DbContext e mova-a. Isso é importante porque, se o projeto de migrações não contiver uma migração, o comando Add-Migration não poderá localizar o DbContext.
Configure o assembly de migrações:
services.AddDbContext<ApplicationDbContext>( options => options.UseSqlServer( Configuration.GetConnectionString("DefaultConnection"), x => x.MigrationsAssembly("WebApplication1.Migrations")));
Adicione uma referência ao projeto de migrações com base no projeto de inicialização.
<ItemGroup> <ProjectReference Include="..\WebApplication1.Migrations\WebApplication1.Migrations.csproj" /> </ItemGroup>
Se isso causar uma dependência circular, você poderá atualizar o caminho de saída base do projeto de migrações:
<PropertyGroup> <BaseOutputPath>..\WebApplication1\bin\</BaseOutputPath> </PropertyGroup>
Se você tiver feito tudo corretamente, deverá conseguir adicionar novas migrações ao projeto.
dotnet ef migrations add NewMigration --project WebApplication1.Migrations