EF Code First中Update-database指定迁移失效:总是执行所有迁移
解决EF Code First仅指定迁移执行的问题
- 你之前用的命令逻辑不对:直接执行
Update-Database IdentityMigration时,EF会把IdentityMigration当成连接字符串名称,而非目标迁移,所以才会默认执行所有迁移。 - 正确的命令是通过
-TargetMigration参数指定要应用的迁移:
这个命令会将数据库更新到Update-Database -TargetMigration IdentityMigrationIdentityMigration对应的版本,只会执行「当前已应用迁移」到「该目标迁移」之间的步骤。 - 如果你的需求是完全跳过其他迁移,仅创建Identity相关表,可以用脚本生成的方式单独执行:
- 生成从空数据库到
IdentityMigration的SQL脚本:Update-Database -TargetMigration IdentityMigration -Script -SourceMigration:0 - 将生成的SQL脚本直接在数据库中执行,就能只创建Identity的表结构。
- 生成从空数据库到
- 注意:如果
IdentityMigration依赖其他迁移中的实体或配置,EF必须先执行这些依赖迁移,这种情况下无法单独跳过,需要先调整迁移之间的依赖关系。 - 可以先用
Get-Migrations命令查看所有迁移的状态(已应用/待应用),确认目标迁移的名称和执行顺序是否正确。
内容的提问来源于stack exchange,提问作者Ziad Ahmed
相关产品推荐
相关产品推荐

