Ayrı geçişler projesi kullanmaUsing a Separate Migrations Project

Geçişlerinizi DbContextsahip olandan farklı bir derlemede depolamak isteyebilirsiniz.You may want to store your migrations in a different assembly than the one containing your DbContext. Bu stratejiyi Ayrıca birden çok geçiş kümesini (örneğin, geliştirme için bir diğeri de yayından yayın yükseltmeleri için başka bir şekilde) sürdürmek için de kullanabilirsiniz.You can also use this strategy to maintain multiple sets of migrations, for example, one for development and another for release-to-release upgrades.

Bunu yapmak için...To do this...

  1. Yeni bir sınıf kitaplığı oluşturun.Create a new class library.

  2. DbContext derlemenizin başvurusunu ekleyin.Add a reference to your DbContext assembly.

  3. Geçişler ve model anlık görüntü dosyalarını sınıf kitaplığına taşıyın.Move the migrations and model snapshot files to the class library.

    İpucu

    Zaten geçiş yaptıysanız, DbContext 'i içeren projede bir tane oluşturun ve taşıyın.If you have no existing migrations, generate one in the project containing the DbContext then move it. Bu önemlidir çünkü geçişler derlemesi var olan bir geçiş içermiyorsa, Add-Migration komutu DbContext 'i bulamaz.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. Geçişler derlemesini yapılandırın:Configure the migrations assembly:

    options.UseSqlServer(
        connectionString,
        x => x.MigrationsAssembly("MyApp.Migrations"));
    
  5. Başlangıç derlemesinden geçiş derlemenizin başvurusunu ekleyin.Add a reference to your migrations assembly from the startup assembly.

    • Bu, döngüsel bağımlılığa neden olursa, sınıf kitaplığının çıkış yolunu güncelleştirin:If this causes a circular dependency, update the output path of the class library:

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

Her şeyi doğru yaptıysanız, projeye yeni geçişler ekleyebilmelisiniz.If you did everything correctly, you should be able to add new migrations to the project.

dotnet ef migrations add NewMigration --project MyApp.Migrations