8

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

public int? iframeVideoId { get; set; }

当我搜索那张桌子时,它会炸毁一个'

无效的列名错误

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

[Column("DisplayVideo")]
public int iframeVideoId { get; set; }

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

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

而且,我将该列添加到另一个表中(显然是次优的),它立即就可以正常工作了。不过,我仍然想知道为什么我有一个无法在 EF 中添加列的表

4

2 回答 2

2

由于复制/粘贴情况,我的映射类出现错误。如您所见,将TranferredToEVP映射到 3 个不同的列。我在最后一列TranferredToGUID上收到“无效的列名”,但正在寻找TranferredToGUID1。希望这可以帮助。

this.Property(t => t.TransferredToEVP).HasColumnName("TransferredToEVP");
this.Property(t => t.TransferredToEVP).HasColumnName("TransferredToName");
this.Property(t => t.TransferredToEVP).HasColumnName("TransferredToGUID");
于 2014-06-02T21:55:28.687 回答
0

我遇到了和 Amy Jonas 一样的问题,如果你碰巧遇到这个问题,请确保映射是正确的。

我的代码以前看起来像这样:

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

它应该是 :

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

有时我们太忙以至于忘记查看这些细节。

于 2017-03-24T03:07:09.527 回答