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

EF6项目Docker SQL Server更新数据库时删除不存在列报错

解决EF6自动迁移残留旧列引用的问题

1. 彻底清理迁移相关文件

  • 手动删除项目Migrations文件夹下所有迁移文件(保留Configuration.cs即可)
  • 检查DbContext对应的模型快照文件(如YourContextModelSnapshot.cs),确认无ColumnName的任何引用,若有直接删除对应代码段

2. 重置迁移基线

打开Package Manager Console(PMC),执行命令生成空的初始迁移,将当前模型设为基线:

Add-Migration InitialCreate -IgnoreChanges

3. 更新全新数据库

对全新部署的Docker SQL Server执行数据库更新:

Update-Database

此操作会将初始迁移记录写入__MigrationHistory表,后续迁移将完全基于当前模型生成。

4. 排查自动迁移配置

检查Configuration.cs中的自动迁移设置,清理可能存在的自定义硬编码逻辑:

internal sealed class Configuration : DbMigrationsConfiguration<YourDbContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
        AutomaticMigrationDataLossAllowed = true;
    }
    // 检查Seed方法或其他自定义迁移逻辑,确保无旧列相关代码
}

5. 确保Docker数据库完全干净

  • 删除旧的SQL Server容器及关联卷,避免残留旧数据文件:
docker rm -f your-sql-container
docker volume rm your-sql-volume
  • 重新创建容器,确保启动的是完全全新的数据库实例

内容的提问来源于stack exchange,提问作者Gary Frewin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 07:15:51