同一项目中为两个DbContext配置独立迁移目录的方法
同一项目中为多个DbContext配置独立迁移目录(无需拆分程序集)
完全可以在不创建两个迁移程序集的前提下实现需求,具体操作步骤如下:
步骤1:创建目标迁移目录
在项目根目录下手动搭建如下目录结构:Migrations/Context1DbMigrations/Context2Db步骤2:添加迁移时指定输出目录
使用EF Core CLI命令添加迁移时,通过-o(或--output-dir)参数指定对应的输出目录,同时用-c参数明确目标DbContext:
# 为Context1生成初始迁移,输出到Migrations/Context1Db add-migration InitialMigration -c Context1 -o Migrations/Context1Db # 为Context2生成初始迁移,输出到Migrations/Context2Db add-migration InitialMigration -c Context2 -o Migrations/Context2Db
后续新增迁移时,同样需要带上这两个参数,例如:
add-migration AddUserEntity -c Context1 -o Migrations/Context1Db
- 步骤3:执行数据库迁移
更新数据库时,只需指定对应的DbContext即可,EF会自动读取对应目录下的迁移文件,并将迁移记录写入你已配置好的Schema下的__EFMigrationsHistory表:
update-database -c Context1 update-database -c Context2
注意事项
- 生成的迁移文件命名空间会自动匹配目录结构(例如
YourProjectName.Migrations.Context1Db),无需手动修改,EF Core能正确关联到对应的DbContext。 - 确保每个DbContext的
MigrationsHistoryTable配置已指向对应Schema,避免迁移记录冲突。
内容的提问来源于stack exchange,提问作者Ayman
相关产品推荐
相关产品推荐

