将列添加到DB表后,entity framework出现问题

我需要在我的数据库中的表中添加一个新的NVARCHAR列。 所以我添加了该列,然后启动了Visual Studio以更新Entity Framework的EDMX文件。

我在数据库中运行了所有内容的更新模型,这只导致“数据读取器不兼容” – 错误。 所以我在DB中重命名了整个表,从数据库更新了EDMX,将表重命名为原始名称,再次运行update,然后为所有受影响的存储过程创建了新的函数导入。 但我仍然得到同样的错误:

数据读取器与指定的'[Model]。[Entity]’不兼容。 类型为“[Column]”的成员在数据读取器中没有相应的具有相同名称的列。

我看了一下,如果数据库和框架中的列名不同,这似乎是一个常见的错误。 然而情况并非如此,它们具有相同的名称。

我可以通过[Entity] .Context。[Column]访问代码中的列,所以我不太清楚数据阅读器在抱怨什么。

我已经没有想法了,所以欢迎任何帮助。

更新模型会替换存储架构,但不会替换客户端架构或映射。 要从“干净的平板”开始,请备份当前的EDMX ,然后将其作为XML打开。 删除对表的所有引用,然后在图形错误中关闭并打开。 建立。 如果您有任何错误(可能是已删除表的已损坏链接),请修复它们。 然后更新模型以重新添加表。

刚刚遇到与上述相同的问题。 尝试从edmx中删除实体,尝试删除并重新添加函数import,最后在函数import中使用复杂类型重建,但也无法正常工作。

我意识到这种错误可能发生在任何不匹配的情况下,但我们发现问题出在我们用于函数导入的存储过程中。 存储过程使用特定的选择列名,列名等,我们添加到表中的新列不在该列表中。 为了测试,我们使用*,更新了EDMX并解决了我们的问题。

事实certificateEDMX很好,但是由于一些奇怪的原因,设计师在我的项目中停止更新Designer.cs。

不得不进去并手动编辑它。

对我来说,这是一个我更改实体(垂直实体拆分)的问题,但我的一个存储过程没有为该新字段提取数据。 我添加了它(在SP中),现在一切运行正常。

除非它只是添加一个新项目,否则每次我尝试“从数据库更新模型”时都会抛出错误…

幸运的是,解决方案很简单 –

 1) Open Web.config, find  node 2) Delete the DBNameEntities  - this way you do not have to modify any references to your emdx model 2) Delete the ADO.NET Entity Data Model (.emdx) 3) Re-add the ADO.NET Entity Data Model (.emdx) with the same name. 

它更快,更防弹。 (至今!?)

如果重新添加DataModel,您将丢失所有DataBindings – 尤其是窗体上控件的绑定(如DbGrid)。 我已修复此问题在外部编辑器中手动编辑DataModel.edmx文件。