EF6数据库优先模式下无法向现有EDMX添加表和视图求助
解决EF6数据库优先模式下添加表/视图触发NullReferenceException的问题
我之前碰到过一模一样的EF6数据库优先场景问题,结合你的情况(VS2017、现有EDMX加存储过程正常但加表/视图报空引用、新建EDMX无异常),给你几个针对性的排查和修复步骤:
清理项目缓存与临时文件
先关闭VS2017,找到项目根目录,删掉这些内容:- 隐藏的
.vs文件夹(存着VS的缓存配置) bin和obj目录(编译生成的临时文件)
重新打开项目后,右键EDMX选择Update Model from Database,先刷新现有对象,再尝试添加目标表/视图。缓存损坏是这类异常的常见诱因,这个操作大概率能解决问题。
- 隐藏的
检查EDMX XML文件是否损坏
右键EDMX文件,选择Open With->XML (Text) Editor,查看XML结构:- 排查有没有缺失的闭合标签、无效的实体引用,比如
<EntityType>或<EntitySet>节点是不是有不完整的定义 - 可以对比新建的正常EDMX的XML结构,修复可疑的损坏部分(操作前一定要备份原EDMX文件)
- 排查有没有缺失的闭合标签、无效的实体引用,比如
重置VS2017用户配置
打开VS2017,依次点菜单栏Tools->Import and Export Settings->Reset all settings,选择重置到默认设置后重启VS。这个操作能排除自定义VS配置导致的工具异常,注意会重置你的快捷键、窗口布局等设置,不过可以后续再调整回来。验证EF6版本兼容性
确认项目中EntityFrameworkNuGet包的版本和VS2017的EF工具兼容:- 打开NuGet包管理器,把
EntityFramework更新到最新稳定兼容版(推荐EF6.4.4,完美支持VS2017) - 更新完成后重新生成项目,再尝试添加表/视图
- 打开NuGet包管理器,把
手动添加表/视图(应急方案)
如果以上方法都没效果,可以尝试手动编辑EDMX XML来添加对象(需要熟悉EDMX的结构,操作前务必备份):- 在SQL Server里拿到目标表/视图的完整结构
- 在EDMX的
<edmx:StorageModels>节点下添加对应的存储模型定义 - 在
<edmx:ConceptualModels>节点下添加对应的概念实体类定义 - 在
<edmx:Mappings>节点下配置存储模型和概念模型的映射关系
内容的提问来源于stack exchange,提问作者Llm
相关产品推荐
相关产品推荐

