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

使用EF Core SqlServer时Migrate()未更新数据库的问题咨询

问题分析与解决步骤

你遇到的核心问题是没有为实体和映射的变更生成对应的EF Core迁移文件——Migrate()方法只会应用已经存在的迁移脚本,当你修改了实体结构但未生成新迁移时,EF Core会判定数据库与现有迁移状态一致,因此不会执行任何变更。

必须执行的操作步骤

  1. 生成新的迁移文件

    • 若使用Visual Studio包管理器控制台,执行命令:
      Add-Migration 自定义迁移名称 # 示例:AddNewDbSets_UpdateColumnTypes
      
    • 若使用.NET CLI,执行命令:
      dotnet ef migrations add 自定义迁移名称
      

    执行后,项目的Migrations目录会生成包含实体变更逻辑的迁移文件。

  2. 重新运行应用
    再次启动项目时,context.Database.Migrate()会自动应用新生成的迁移脚本,将实体结构的变更同步到数据库中。

额外注意事项

  • 确认SpannerContext类中已正确添加新增的DbSet<T>属性,EF Core仅会追踪上下文中注册的实体。
  • 检查实体的映射配置(Fluent API或数据注解)是否准确反映了列类型的变更,确保迁移生成的逻辑符合预期。
  • 若之前依赖EnsureCreated()创建数据库:EnsureCreated()不会生成迁移历史记录,会导致后续迁移无法识别数据库状态。这种情况需要删除现有数据库,先生成初始迁移再执行Migrate(),或者手动补全迁移历史记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:45:33