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

Entity Framework Core创建新迁移时残留旧数据问题求助

解决EF Core Code-First模式下旧迁移缓存残留问题

问题描述

我使用Entity Framework Core结合ASP.NET Core MVC,采用Code-First方式搭建站点与数据库的连接,整体运行正常。但目前遇到棘手问题:即使删除了整个迁移文件夹和数据库,创建新迁移时似乎仍有旧数据被缓存并使用,导致多种错误。例如报错:

The seed entity for entity type 'ResourceField' cannot be added because no value was provided for the required property 'ResourceFieldDataLevel'

该报错看似合理,因为我的ResourceField种子数据中确实没有ResourceFieldDataLevel字段:

modelBuilder.Entity<ResourceField>().HasData(
    new ResourceField { ResourceFieldId = 1, Level = 1,
    VillageId = 1, TypeOfResource = ResourceFieldType.Clay },

但实际上ResourceField类也根本不存在该属性:

public class ResourceField
{
    public ResourceField()
    {
    }

    [Key]
    public int ResourceFieldId { get; set; }
    public ResourceFieldType TypeOfResource { get; set; }
    public int VillageId { get; set; }
    public virtual Village Village { get; set; }
    public int Level { get; set; }
}

此前我曾测试功能,添加并移除过该属性,但EF似乎无法彻底清除旧迁移信息,一直使用已不存在的内容。我已删除迁移文件夹和数据库,执行dotnet ef migrations add InitialCreate后仍报错,尝试批量清理构建也无效。请问如何让Entity Framework Core彻底清除历史信息,基于当前代码重新开始?

解决步骤

1. 清理项目构建输出

  • 手动删除项目根目录下的bin和obj文件夹,这两个目录会残留编译后的旧实体类、迁移缓存等文件。
  • 或者通过命令行执行:dotnet clean,确保构建输出被完全清理。

2. 彻底删除目标数据库

  • 若使用本地SQL Server:打开SQL Server Management Studio,找到目标数据库右键删除,勾选关闭现有连接选项,避免删除失败。
  • 若使用SQLite:直接删除对应的.db文件。
  • 其他数据库类型,确保数据库实例、对应的架构数据被完全移除,无残留。

3. 清除EF Core设计时缓存

EF Core在设计时会生成缓存文件,存储在用户目录的NuGet缓存区域,路径示例(不同EF版本、系统会有差异):
C:\Users\{你的用户名}\.nuget\packages\microsoft.entityframeworkcore.design\{EF版本号}\tools\netcoreapp3.1\win-x64\DesignTimeHost

  • 找到该目录下的缓存文件夹或相关文件,直接删除即可。

4. 重新生成项目并创建迁移

  • 执行dotnet build编译项目,确保当前实体类、DbContext代码无编译错误。
  • 执行dotnet ef migrations add InitialCreate,此时会基于当前代码生成全新的迁移文件。
  • 最后执行dotnet ef database update,创建全新的数据库。

额外检查项

  • 检查DbContext的OnModelCreating方法,确认没有残留的旧配置代码(比如之前针对ResourceFieldDataLevel的配置)。
  • 若使用版本控制,确保本地工作区的实体类、DbContext文件是最新的,没有未合并的旧代码残留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 01:31:08