数据库第一实体框架更新模型不起作用:可能是什么原因?

时间:2013-05-29 00:52:13

标签: sql-server asp.net-mvc-3 entity-framework-4

我有一个使用实体框架4的现有MVC 3应用程序。该模型是使用数据库优先模式生成的。我还有“自动代码生成”来生成类。

今天,我对我的数据库做了一个简单的修改。字段从“int”变为“float”。我去了.edmx,右键单击,从数据库更新模型......

但是当我看到这个领域时,它根本没有改变。我仔细检查了一切,数据库被修改了,但模型永远不会改变......这是否意味着我需要手工完成?

我记得我之前做了几次更新(比如2个月前),它似乎在当时工作......我需要检查什么可以打破?

修改

在subversion中查看edmx diff文件时,似乎已完成更改,但在“图形模式”下查看时,更改不存在。此外,不会更新生成的代码。

-          <Property Name="PreparationTime" Type="int" Nullable="false" />
+          <Property Name="PreparationTime" Type="float" Nullable="false" />

5 个答案:

答案 0 :(得分:6)

这是正常行为。 ; - )

如果您只修改数据库端,即使执行“从数据库更新模型”向导,您的概念模型也不会更改。 请查看此SO answer,其中我将解释如何构建EDMX以及它应如何发展。

答案 1 :(得分:2)

检查清单

  • 检查Output窗口,查看命令Update model from database
  • 期间发生的任何错误
  • 从.edmx属性窗口检查数据库连接字符串
  • 导致它的任何自定义代码生成模板?
  • 备份.edmx的副本,然后尝试从.edmx中删除修改过的实体并重新添加回来

答案 2 :(得分:1)

从MSDN尝试此黑客

1。更新EDMX文件后构建项目。

2。在解决方案资源管理器中右键单击您的.tt文件。

3。选择“运行自定义工具”选项。

答案 3 :(得分:0)

我知道这是一个老问题,但由于给定的答案在我的案例中不起作用,我认为我只是将解决方案留给其他有类似问题的人。

假设您正在使用SQL Server Management Studio:

  • 右键单击“Database Diagrams”并选择“New Database Diagram”。
  • 包括所有表格(“__ MigigrationHistory”除外,如果有),然后按“添加”。
  • 尝试再次更新您的EDMX。

对我来说,这是解决方案,经过几个月我一直在为edmx至关重要的项目使用解决办法,但拒绝以正常方式更新。一位新同事提到这是可能的解决办法。如果我早些时候知道这个,我本可以节省的时间......

答案 4 :(得分:0)

以上所有答案都无法解决我的问题。 这是解决我问题的原因:

检查警告部分,您要在模型中更新/添加的表没有必要的元素(例如缺少主键)。更新数据库表以修复警告,然后更新模型。