別のプロジェクトを使用します。Using a Separate Project

1 つを含む別のアセンブリで、移行を格納することも、DbContextします。You may want to store your migrations in a different assembly than the one containing your DbContext. リリースごとにアップグレードとこの戦略など、移行の複数のセットを維持するために、開発用に 1 つを使用することもできます。You can also use this strategy to maintain multiple sets of migrations, for example, one for development and another for release-to-release upgrades.

目的To do this...

  1. 新しいクラス ライブラリを作成します。Create a new class library.

  2. DbContext アセンブリへの参照を追加します。Add a reference to your DbContext assembly.

  3. クラス ライブラリに移行し、モデルのスナップショット ファイルを移動します。Move the migrations and model snapshot files to the class library.

    ヒント

    既存の移行がない場合は、DbContext を含むプロジェクトを生成し、移動します。If you have no existing migrations, generate one in the project containing the DbContext then move it. 移行アセンブリに既存の移行が含まれていない場合、Add-migration コマンドことはできません、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 the migrations assembly:

    options.UseSqlServer(
        connectionString,
        x => x.MigrationsAssembly("MyApp.Migrations"));
    
  5. スタートアップ アセンブリから、移行のアセンブリへの参照を追加します。Add a reference to your migrations assembly from the startup assembly.

    • これにより、循環依存関係場合は、クラス ライブラリの出力パスを更新します。If this causes a circular dependency, update the output path of the class library:

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

すべてのプロセスが正しく、プロジェクトに新しい移行を追加できる必要があります。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