You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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:创建基于代码的迁移(推荐)

  1. 在程序包管理器控制台执行:Add-Migration 自定义迁移名称(多配置场景需追加-ConfigurationTypeName 配置类全名)
  2. 检查生成的迁移文件,确认模型变更符合预期
  3. 执行更新命令:Update-Database(多配置场景同样追加参数)

方式2:启用自动迁移

  1. 找到项目中继承自DbMigrationsConfiguration的配置类
  2. 修改配置属性,示例代码:
internal sealed class Configuration : DbMigrationsConfiguration<你的DbContext类>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
        // 如果允许自动迁移时的数据丢失(如删除字段),取消下面注释
        // AutomaticMigrationDataLossAllowed = true;
    }

    // 其他配置代码...
}
  1. 执行Update-Database完成数据库更新

内容的提问来源于stack exchange,提问作者Ashan Withana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 06:39:19