Использование отдельного проекта миграции

Может потребоваться сохранить миграции в проекте, отличном от того, который содержит вашу DbContext. Эту стратегию можно также использовать для поддержки нескольких наборов миграций, например для разработки и другого для обновлений выпуска.

Совет

Вы можете скачать используемый в этой статье пример из репозитория GitHub.

Шаги

  1. Создайте новую библиотеку классов.

  2. Добавьте ссылку на проект DbContext.

  3. Переместите файлы моментальных снимков миграции и модели в библиотеку классов.

    Совет

    Если у вас нет существующих миграций, создайте его в проекте, содержащем DbContext, а затем переместите его. Это важно, так как если проект миграции не содержит существующей миграции, команда Add-Migration не сможет найти DbContext.

  4. Настройте сборку миграций:

    services.AddDbContext<ApplicationDbContext>(
        options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection"),
                x => x.MigrationsAssembly("WebApplication1.Migrations")));
    
  5. Добавьте ссылку на проект миграции из запускаемого проекта.

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

    Если это приводит к циклической зависимости, можно обновить базовый выходной путь проекта миграции .

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

Если все было правильно, вы сможете добавить новые миграции в проект.

dotnet ef migrations add NewMigration --project WebApplication1.Migrations