Entity framework 实体框架“;无效的列名";

Entity framework 实体框架“;无效的列名";,entity-framework,ef-code-first,Entity Framework,Ef Code First,我们已经将现有数据库转换为使用EF,所以我们编写类来映射到表。我添加了一个新列,一个名为“iframeVideoId”的可为null的int。我用 public int? iframeVideoId { get; set; } 当我搜索那张桌子时,它爆炸了 “无效列名”错误 。这是一个简单的属性,它不是索引,也不与任何其他表相关。我尝试在DB中将其重命名为“DisplayVideo”,并使其不可为空。然后我就 [Column("DisplayVideo")] public int iframe

我们已经将现有数据库转换为使用EF,所以我们编写类来映射到表。我添加了一个新列,一个名为“iframeVideoId”的可为null的int。我用

public int? iframeVideoId { get; set; }
当我搜索那张桌子时,它爆炸了

“无效列名”错误

。这是一个简单的属性,它不是索引,也不与任何其他表相关。我尝试在DB中将其重命名为“
DisplayVideo
”,并使其不可为空。然后我就

[Column("DisplayVideo")]
public int iframeVideoId { get; set; }
现在我得到一个错误,DisplayVideo不是有效列。当然,我已经仔细检查了我是否指向正确的数据库,并确认我的代码可以指向的每个数据库都有这个列。我也做了一个清理和重建所有,并重新启动了我的机器。有什么不对劲吗?这是一个基本专栏,就在那里。根据过去的经验,我知道如果类型不匹配(它们都是int),我会得到一个与类型之间转换失败相关的错误。这对我来说毫无意义。我没有要刷新的edmx文件,因为我们正在编写直接映射到DB的类

只是补充一下,我将列更改为字符串,这没有什么区别。这是一个新列,有一个简单的值,EF声称它不存在


而且,我将该列添加到另一个表中(显然是次优的),它立即就可以正常工作了。我仍然想知道为什么我有一个不能在EF中添加列的表,尽管在复制/粘贴的情况下,我的映射类中有一个错误。如您所见,已将TransferredToEVP映射到3个不同的列。我在最后一列TranferredToGUID上得到一个“无效列名”,但正在查找TranferredToGUID1。希望这有帮助

this.Property(t => t.TransferredToEVP).HasColumnName("TransferredToEVP");
this.Property(t => t.TransferredToEVP).HasColumnName("TransferredToName");
this.Property(t => t.TransferredToEVP).HasColumnName("TransferredToGUID");

我和艾米·乔纳斯有同样的问题,如果你碰巧遇到这个问题,请确保映射是正确的

我的代码以前是这样的:

Property(d => d.LastUpdatedOn).HasColumnName("LastUpdatedOn");
Property(d => d.LastUpdatedOn).HasColumnName("LastUpdatedBy");
应该是:

Property(d => d.LastUpdatedOn).HasColumnName("LastUpdatedOn");
Property(d => d.LastUpdatedBy).HasColumnName("LastUpdatedBy");

有时我们太忙了,以至于忘了查看这些详细信息。

您确定它在该数据库的正确表和模式中吗?这是怎么回事?