使用单独的迁移项目Using a Separate Migrations Project

你可能想要将迁移存储在与包含你的 DbContext的程序集不同的程序集中。 你还可以使用此策略来维护多个迁移集,例如,一个用于开发,另一个用于发布到发布升级。

为此,请执行以下操作…

  1. 创建一个新的类库。

  2. 添加对 DbContext 程序集的引用。

  3. 将迁移和模型快照文件移动到类库。

    提示

    如果没有现有迁移,请在包含 DbContext 的项目中生成一个迁移,然后移动它。 这一点很重要,因为如果迁移程序集不包含现有迁移,则添加迁移命令将无法找到 DbContext。

  4. 配置迁移程序集:

    1. options.UseSqlServer(
    2. connectionString,
    3. x => x.MigrationsAssembly("MyApp.Migrations"));
  5. 从启动程序集添加对迁移程序集的引用。

    • 如果这导致循环依赖项,请更新类库的输出路径:

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

如果一切正常,应能够向项目添加新的迁移。

  1. dotnet ef migrations add NewMigration --project MyApp.Migrations
  1. Add-Migration NewMigration -Project MyApp.Migrations