Usando um projeto separadoUsing a Separate Project

Você pode desejar armazenar suas migrações em um assembly diferente que o outro contendo seu DbContext.You may want to store your migrations in a different assembly than the one containing your 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 versão.You can also use this strategy to maintain multiple sets of migrations, for example, one for development and another for release-to-release upgrades.

Para fazer isso...To do this...

  1. Criar uma nova biblioteca de classes.Create a new class library.

  2. Adicione uma referência ao seu assembly de DbContext.Add a reference to your DbContext assembly.

  3. Mova as migrações e arquivos de instantâneo do modelo para a biblioteca de classes.Move the migrations and model snapshot files to the class library.

    Dica

    Se você não tiver nenhuma migração existente, gerá-lo no projeto que contém o DbContext e em seguida, movê-lo.If you have no existing migrations, generate one in the project containing the DbContext then move it. Isso é importante porque se o assembly de migrações não contiver uma migração existente, o comando Add-Migration será não é possível localizar o DbContext.This is important because if the migrations assembly does not contain an existing migration, the Add-Migration command will be unable to find the DbContext.

  4. Configure o conjunto de migrações:Configure the migrations assembly:

    options.UseSqlServer(
        connectionString,
        x => x.MigrationsAssembly("MyApp.Migrations"));
    
  5. Adicione uma referência ao seu assembly de migrações do assembly de inicialização.Add a reference to your migrations assembly from the startup assembly.

    • Se isso faz com que uma dependência circular, atualize o caminho de saída da biblioteca de classes:If this causes a circular dependency, update the output path of the class library:

      <PropertyGroup>
        <OutputPath>..\MyStartupProject\bin\$(Configuration)\</OutputPath>
      </PropertyGroup>
      

Se você fez tudo corretamente, você poderá adicionar novas migrações ao projeto.If you did everything correctly, you should be able to add new migrations to the project.

Add-Migration NewMigration -Project MyApp.Migrations
dotnet ef migrations add NewMigration --project MyApp.Migrations