次の方法で共有


個別の移行プロジェクトの使用

移行は、DbContextを含むプロジェクトとは異なるプロジェクトに格納することをお勧めします。 また、この戦略を使用して、複数の移行セット (開発用に 1 つ、リリースからリリースへのアップグレード用など) を維持することもできます。

ヒント

この記事の サンプルは、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