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

添加到vwMyView的MyColumn未被EF6 .edmx识别,如何处理?

解决EF6 EDMX未同步视图新列及存储过程结果集的问题

这种情况在EF6里其实挺常见的,算不上异常——EF的模型更新机制对视图、依赖其他对象的存储过程的结构变化敏感度不高,尤其是当存储过程用SELECT *返回结果时,很容易出现模型和数据库不同步的情况。下面是具体的解决步骤:

一、同步视图vwMyView的结构到EDMX

  1. 打开你的EDMX设计器,右键空白处选择更新模型从数据库。
  2. 在弹出的窗口中,切换到刷新选项卡,找到vwMyView并勾选,点击完成。如果这次刷新没生效,试试更彻底的方法:
    • 先从EDMX设计器里删除vwMyView对应的实体(右键实体->删除),同时确保模型浏览器里的视图也被移除。
    • 再次执行更新模型从数据库,在添加选项卡中重新选中vwMyView,完成添加。这样EF会重新读取视图的最新结构,新列MyColumn就会出现在vwMyView实体中。

二、同步存储过程MySproc的结果集

因为你的存储过程用了SELECT vwMyView.*,EF第一次导入时会缓存当时的结果集结构,视图更新后不会自动同步。解决方法:

  1. 同样先从EDMX中删除MySproc:在模型浏览器里找到该存储过程,右键删除,同时删除对应的MySproc_Result复杂类型(如果有的话)。
  2. 重新执行更新模型从数据库,在添加选项卡中选中MySproc,点击完成。
  3. 接下来要重新配置函数导入:在模型浏览器里找到刚添加的MySproc,右键选择添加函数导入,在弹出的窗口中点击获取列信息——这一步是关键,EF会重新执行存储过程获取最新的结果集,然后选择生成新的复杂类型(或覆盖旧的),确认后MySproc_Result就会包含MyColumn了。

额外提示

  • 尽量避免在存储过程中用SELECT *,明确指定返回列,这样后续列变更时,EF更新模型的成功率更高,也更容易排查问题。
  • 如果不想删除重新添加,也可以手动编辑EDMX的XML文件(不推荐新手操作):找到对应视图的EntityType节点和存储过程结果集的ComplexType节点,手动添加MyColumn的属性定义,但要注意数据类型和数据库保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:20:32