实体框架"无效的列名称"

cgr*_*aus 7 entity-framework ef-code-first

我们已经将现有数据库转换为使用EF,因此我们编写类来映射到我们的表.我添加了一个新列,一个名为'iframeVideoId'的可空int.我用它绘制了它

public int? iframeVideoId { get; set; }
Run Code Online (Sandbox Code Playgroud)

当我搜索那张桌子的时候,它爆炸了

无效的列名称'错误

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

[Column("DisplayVideo")]
public int iframeVideoId { get; set; }
Run Code Online (Sandbox Code Playgroud)

现在我收到DisplayVideo不是有效列的错误.当然,我已经仔细检查过我指向正确的数据库,并确认我的代码COULD指向的每个数据库都有此列.我也做了一个干净的重建,并重新启动了我的机器.可能有什么不对?这是一个基本专栏,它就在那里.我从过去的经验中知道,如果类型不匹配(它们都是int),我会得到与类型之间转换失败相关的错误.这对我来说毫无意义.我没有要刷新的edmx文件,因为我们正在编写类来直接映射到DB

只是添加,我将列更改为字符串,它没有任何区别.这是一个新的专栏,具有简单的价值,EF声称它不存在.

并且,我将列添加到另一个表(显然是次优的),并且它立即工作.我仍然想知道为什么我有一个表我不能在EF中添加列

小智 2

我的映射类在复制/粘贴情况下出现错误。如您所见,将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");
Run Code Online (Sandbox Code Playgroud)