別のプロジェクトを使用します。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 haven't added any, add one to the DbContext project then move it.
  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>..\MyStarupProject\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 migraitons add NewMigration --project MyApp.Migrations