Menggunakan Proyek Migrasi Terpisah

Anda mungkin ingin menyimpan migrasi Anda dalam proyek yang berbeda dari yang berisi DbContext. Anda juga dapat menggunakan strategi ini untuk mempertahankan beberapa set migrasi, misalnya, satu untuk pengembangan dan satu lagi untuk peningkatan rilis-ke-rilis.

Tip

Anda dapat melihat contoh artikel ini di GitHub.

Langkah-langkah

  1. Buat pustaka kelas baru.

  2. Tambahkan referensi ke proyek DbContext Anda.

  3. Pindahkan migrasi dan file rekam jepret model ke pustaka kelas.

    Tip

    Jika Anda tidak memiliki migrasi yang ada, buat migrasi dalam proyek yang berisi DbContext, lalu pindahkan. Ini penting karena jika proyek migrasi tidak berisi migrasi yang ada, perintah Add-Migration tidak akan dapat menemukan DbContext.

  4. Konfigurasikan rakitan migrasi:

    services.AddDbContext<ApplicationDbContext>(
        options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection"),
                x => x.MigrationsAssembly("WebApplication1.Migrations")));
    
  5. Tambahkan referensi ke proyek migrasi Anda dari proyek startup .

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

    Jika ini menyebabkan dependensi melingkar, Anda dapat memperbarui jalur output dasar proyek migrasi sebagai gantinya:

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

Jika Anda melakukan semuanya dengan benar, Anda harus dapat menambahkan migrasi baru ke proyek.

dotnet ef migrations add NewMigration --project WebApplication1.Migrations