在Visual Studio中更新SQL Server数据模型时遇Error 11009及3004错误求助
解决EF模型更新时的Error 11009和Error 3004问题
我之前也碰到过一模一样的报错,这俩错误本质上是同一个原因——你的Customer实体里的UpdateDate属性和数据库表的update date字段没建立正确的映射关系,导致EF在处理实体往返(读取后再写入数据库)时找不到属性对应的字段,直接抛出了这两个错误。下面是一步步的解决方法:
1. 检查EDMX模型的映射关系
- 打开你的EDMX文件,在模型浏览器里找到
stockModel.Customer实体 - 右键点击实体,选择「查看映射详细信息」
- 在弹出的映射窗口里,确认
UpdateDate属性已经和Customers表的update date字段关联上。如果没映射,直接把数据库字段拖到实体属性上,或者在下拉菜单里选择对应的字段。
2. 确认数据库字段的正确性
- 先去SQL Server里检查
Customers表,确保确实存在update date字段,别打错字(比如是不是写成了UpdatedDate?) - 如果字段名带空格(
update date),EF映射时容易出问题,建议改成不带空格的命名(比如UpdateDate),之后再重新更新模型;如果不能修改数据库,就在EDMX的映射里把字段名用方括号括起来:[update date]
3. 重新从数据库同步模型
有时候自动更新模型会漏掉字段,你可以试试:
- 右键EDMX设计器空白处,选择「从数据库更新模型」
- 在更新向导里,确保选中
Customers表,并且在字段列表里勾选update date - 如果还是不行,先删除EDMX里的
Customer实体,再重新从数据库导入这个表
4. 检查生成的实体类代码
打开自动生成的Customer.cs文件,确认里面有UpdateDate属性:
public System.DateTime UpdateDate { get; set; }
如果没有这个属性,说明模型生成时没包含该字段,回到步骤3重新同步。
5. 清理缓存并重新生成
如果以上步骤都试过还是报错,试试:
- 右键解决方案→「清理解决方案」
- 然后右键解决方案→「生成解决方案」
有时候VS的缓存会导致映射关系不生效,清理后重新生成就能解决。
内容的提问来源于stack exchange,提问作者hamid reza jafarpour
相关产品推荐
相关产品推荐

