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

非.NET Core项目中更新EDMX文件的具体操作流程

.NET Framework EF6 Database First 模式下 EDMX 更新完整流程(适配三项目结构)

以下流程完全匹配你当前使用的ASP.NET MVC + Core数据层 + SSDT数据库项目的架构,和你之前.NET Core项目里Scaffold-DbContext的数据库优先逻辑对齐,不会破坏现有UoW、仓储层的自定义实现。

前置准备:先通过Database项目完成结构变更并同步到开发库

不要直接在SSMS修改数据库后直接更新EDMX,否则会导致SSDT数据库项目的结构和实际库不一致,后续dacpac部署出问题:

  • 打开Visual Studio中的Database项目,直接在项目内完成所有结构变更:新增/删除表、调整字段属性、添加约束、编写对应前置/后置部署脚本
  • 右键Database项目选择「发布」,将修改后的结构发布到你本地开发用的SQL Server实例,确认发布无报错、脚本执行符合预期
  • 若本次操作包含删表、删字段的变更,提前扫一遍Core项目里的业务代码,标记出引用了这些即将删除对象的位置,减少后续编译排错成本

核心操作:更新EDMX模型

这一步就是EF6对应.NET Core Scaffold-DbContext的内置功能,全程可视化操作:

  • 先关闭所有打开的、由EDMX自动生成的实体类、DbContext类文件,避免文件被VS占用导致更新失败
  • 在解决方案资源管理器的Core项目中找到后缀为.edmx的模型文件,双击打开EF可视化设计器
  • 右键设计器空白区域,选择菜单中的「从数据库更新模型」
  • 在弹出的更新向导中按三个标签页核对变更:
    • 「添加」标签页:会列出开发库中存在、但当前EDMX未映射的表、视图、存储过程,勾选本次需要新增映射的对象即可
    • 「刷新」标签页:会列出已经在EDMX中存在映射、但数据库结构发生变更的对象,保持默认全选即可,向导会自动同步字段、类型、约束的变更
    • 「删除」标签页:会列出数据库中已删除、但EDMX中还保留映射的对象,核对是本次需要移除的表/字段后保持勾选
  • 点击「完成」,等待VS自动更新EDMX的三层结构(概念模型、存储模型、映射关系),同时同步生成对应的实体类代码、DbContext中的DbSet属性定义

校验与排错

  • 更新完成后先查看设计器界面是否有红色错误标记,若提示映射不匹配,先确认你连接的开发库是否已经成功发布了最新结构,90%的这类报错都是连了旧库导致的
  • 打开自动生成的实体类,核对新增字段是否存在、删除字段是否已移除、字段类型和SQL类型映射正确(比如SQL的nvarchar(max)对应C#的string、bit对应bool)
  • 注意:你之前通过partial类扩展的实体逻辑、UoW/仓储层的自定义代码不会被自动更新覆盖,只要检查有没有重名冲突即可
  • 编译整个解决方案,逐一修复因为删表、删字段导致的引用错误。

高频踩坑提醒

  • 不要手动编辑EDMX的XML源文件,也不要直接修改.Designer.cs后缀的自动生成代码,所有自定义逻辑都写在独立的partial类文件中,否则下次更新模型时所有修改都会被覆盖
  • 如果需要给实体属性加数据注解、做特性配置,通过partial类搭配[MetadataType]特性实现,不要直接改自动生成的属性
  • 全程连接本地/开发环境数据库操作,绝对不要直接连生产库更新EDMX,所有环境的数据库部署都通过Database项目生成的dacpac包完成
  • 提交代码时必须同时提交Database项目的结构变更、Core项目中更新后的EDMX文件及对应自动生成的代码文件,避免团队其他成员拉取代码后出现模型和库结构不匹配的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:09:13