ASP.NET MVC项目更新EDMX后遇“实体类型<company>未找到”错误求助
ASP.NET MVC + EF 数据库字段删除后EDMX更新报错:“实体类型未在当前上下文中找到”
我正在开发一个基于ASP.NET MVC的Web应用,用Entity Framework连接SQL Server数据库。在SQL Server中删除三个字段后,需要同步更新Web应用的EDMX文件,但无论怎么操作,都一直报**“实体类型
已尝试的操作
- 直接在EDMX设计器中移除对应字段,保存后等待上下文及相关EF文件同步
- 使用“从数据库更新模型”功能同步变更
- 通过ADO.NET实体数据模型向导删除并重新创建整个EDMX文件
- 用
git diff对比dev分支代码,排查差异 - 检查并测试连接字符串,确认变更后无配置错误
补充更新(针对旧文件冲突的尝试)
考虑到可能存在旧文件与EDMX变更冲突,还做了以下清理操作,但问题仍未解决:
- 在Azure Pipelines中启用高级部署选项:
RemoveAdditionalFilesFlag和ExcludeFilesFromAppDataFlag - 删除Azure DevOps仓库中对应目录文件后重新推送至流水线
可行的排查与解决步骤
- 检查上下文类的DbSet声明
打开EDMX对应的DbContext类(一般命名为xxxContext.cs),确认里面有没有DbSet<Company>的声明,且类名和报错里的<company>完全匹配(注意大小写,EF对类名大小写敏感)。如果没找到,手动添加:public DbSet<Company> Companies { get; set; } - 强制重新生成EDMX代码
右键EDMX文件,选择“运行自定义工具”,强制重新生成实体类和上下文代码。同时删除项目的bin和obj目录,重新编译整个解决方案。 - 排查命名空间冲突
检查Company实体类的命名空间是否和上下文类一致,或者有没有多个同名的Company类(比如不同项目里的重复定义)。 - 检查EDMX元数据XML
右键EDMX文件,选择“打开方式”→“XML编辑器”,搜索<EntityType Name="Company">,确认元数据里的实体定义正确,没有残留旧字段或错误配置。如果有异常,手动修正后保存再重新生成。 - 验证部署文件版本
登录Azure部署服务器,确认部署目录里的EDMX文件和编译后的dll是最新版本,没有被旧文件覆盖。可以尝试手动上传最新编译的文件,替代流水线自动部署的文件测试。
内容的提问来源于stack exchange,提问作者jbwachtel
相关产品推荐
相关产品推荐

