使用单独的迁移项目
你可能希望将迁移存储在与不同的项目中,而不是包含 DbContext
的项目中。 还可使用此策略来维护多组迁移,例如,一组迁移用于开发,另一组用于版本到版本升级。
提示
可在 GitHub 上查看此文章的示例。
步骤
创建一个新的类库。
添加对 DbContext 项目的引用。
将迁移和模型快照文件移动到类库。
提示
如果没有现有迁移,在包含 DbContext 的项目中生成一个迁移,然后移动它。 这一点很重要,因为如果迁移项目不包含现有迁移,Add-Migration 命令将无法找到 DbContext。
配置迁移程序集:
services.AddDbContext<ApplicationDbContext>( options => options.UseSqlServer( Configuration.GetConnectionString("DefaultConnection"), x => x.MigrationsAssembly("WebApplication1.Migrations")));
从 startup 项目添加对迁移项目的引用。
<ItemGroup> <ProjectReference Include="..\WebApplication1.Migrations\WebApplication1.Migrations.csproj" /> </ItemGroup>
如果这会导致循环依赖项,可以改为更新 migrations 项目的基本输出路径:
<PropertyGroup> <BaseOutputPath>..\WebApplication1\bin\</BaseOutputPath> </PropertyGroup>
如果一切正常,应该能够向项目添加新的迁移。
dotnet ef migrations add NewMigration --project WebApplication1.Migrations