Compartilhar via


Usando um projeto de migrações separadas

Talvez você queira armazenar suas migrações em um projeto diferente daquele que contém seu 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

Você pode visualizar o exemplo de deste artigo no GitHub.

Etapas

  1. Crie uma nova biblioteca de classes.

  2. Adicione uma referência ao seu projeto DbContext.

  3. Mova os arquivos de migração e de captura instantânea 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 existente, o comando Add-Migration não poderá localizar o DbContext.

  4. Configure a configuração de migrações:

    services.AddDbContext<ApplicationDbContext>(
        options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection"),
                x => x.MigrationsAssembly("WebApplication1.Migrations")));
    
  5. Adicione uma referência do projeto de inicialização ao seu projeto de migrações.

    <ItemGroup>
      <ProjectReference Include="..\WebApplication1.Migrations\WebApplication1.Migrations.csproj" />
    </ItemGroup>
    

    Se isso causar uma dependência circular, você poderá, em vez disso, atualizar o caminho de saída padrão do projeto de migrações.

    <PropertyGroup>
      <BaseOutputPath>..\WebApplication1\bin\</BaseOutputPath>
    </PropertyGroup>
    

Se você fez tudo corretamente, deverá ser capaz de adicionar novas migrações ao projeto.

dotnet ef migrations add NewMigration --project WebApplication1.Migrations