EF迁移报错求助:首次成功后遇多配置及自动迁移禁用问题
解决Entity Framework迁移的两个核心问题
一、程序集存在多个迁移配置类型的处理
当提示「程序集‘ForApi’中发现多个迁移配置类型,请指定要使用的配置名称」时,执行迁移命令需通过-ConfigurationTypeName参数指定具体的配置类全名(包含命名空间):
- 添加迁移:
Add-Migration 自定义迁移名称 -ConfigurationTypeName ForApi.Migrations.Configuration - 更新数据库:
Update-Database -ConfigurationTypeName ForApi.Migrations.Configuration
二、自动迁移禁用导致的数据库更新失败处理
报错信息翻译
System.Data.Entity.Migrations.Infrastructure.AutomaticMigrationsDisabledException: 无法更新数据库以匹配当前模型,因为存在未处理的模型变更且自动迁移已禁用。请将未处理的模型变更写入基于代码的迁移,或者启用自动迁移。将DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为true以启用自动迁移。
程序包管理器控制台提示翻译:
无法更新数据库以匹配当前模型,因为存在未处理的模型变更且自动迁移已禁用。请将未处理的模型变更写入基于代码的迁移,或者启用自动迁移。将DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为true以启用自动迁移。你可以使用Add-Migration命令将未处理的模型变更写入基于代码的迁移。
两种解决方式
方式1:创建基于代码的迁移(推荐)
- 在程序包管理器控制台执行:
Add-Migration 自定义迁移名称(多配置场景需追加-ConfigurationTypeName 配置类全名) - 检查生成的迁移文件,确认模型变更符合预期
- 执行更新命令:
Update-Database(多配置场景同样追加参数)
方式2:启用自动迁移
- 找到项目中继承自
DbMigrationsConfiguration的配置类 - 修改配置属性,示例代码:
internal sealed class Configuration : DbMigrationsConfiguration<你的DbContext类> { public Configuration() { AutomaticMigrationsEnabled = true; // 如果允许自动迁移时的数据丢失(如删除字段),取消下面注释 // AutomaticMigrationDataLossAllowed = true; } // 其他配置代码... }
- 执行
Update-Database完成数据库更新
内容的提问来源于stack exchange,提问作者Ashan Withana
相关产品推荐
相关产品推荐

