更新实体框架模型后,Visual Studio不会看到更改

时间:2012-11-19 19:39:03

标签: c# entity-framework entity-framework-5

如果我对我的EF 5.0模型进行任何更改,VS似乎没有看到更改。我已经尝试添加一个新表,它在模型中很好地显示,但是如果我尝试在某个地方使用它,表格不会出现在intellisense中,我也无法使用它。

我还尝试更改列的数据类型,如果我查看.edmx模型文件,它再次显示正常,但是Visual Studio仍会在该字段上给出编译器错误,因为我试图分配不正确的数据类型。

如果我完全删除EDMX并重新创建它,那么更改工作正常。但每当我能够“从数据库更新模型”并重建时,从数据库重新生成是很烦人的。

我之前从未遇到过EF的这些问题。有谁知道这个问题的原因或解决方法?

感谢。

9 个答案:

答案 0 :(得分:67)

首先构建您的项目,如果成功,请右键单击“model.tt”文件,然后选择运行自定义工具。它会解决它。

再次构建项目并指向“model.context.tt”运行自定义工具。它将更新 DbSet 列表。

答案 1 :(得分:16)

如果这是edmx文件位于文件夹中的错误,现在已修复 - 下载并安装VS 2012 Update 1.您可以从以下地址获取:http://www.microsoft.com/visualstudio/eng/downloads#d-visual-studio-2012-update

答案 2 :(得分:15)

这显然是实体框架中的一个错误,当您的Edmx文件位于文件夹中时,模型不会更新。 目前可用的解决方法是:

  1. 安装应修复错误的VS 2012 Update 1.
  2. 如果您无法安装Update 1,则必须右键单击model.tt T4模板文件,然后单击“运行自定义工具”。这将为您更新课程。
  3. 希望帮助那里的人。

    链接:http://thedatafarm.com/blog/data-access/watch-out-for-vs2012-edmx-code-generation-special-case/

答案 3 :(得分:11)

我也有这个问题,但是,右键单击model.tt文件并运行"自定义工具"对我来说并没有任何区别,但是Ghlouw提到的页面上的评论使用菜单项" BUILD>转换所有T4模板。"哪个为我做了

答案 4 :(得分:7)

右键单击.tt文件并选择"运行自定义工具",应该更新它: see image

答案 5 :(得分:3)

我搜索了这个答案,因为我在VS2013中遇到了类似的情况。就我而言,我发现了一个简单的" Clean Solution"清除了所有旧的定义。

答案 6 :(得分:0)

你在N-Tiered项目工作吗?如果是这样,请在使用之前尝试重建数据层(或存储EDMX文件的任何位置)。

答案 7 :(得分:0)

我也遇到过这个问题,没有在model.tt文件下生成任何类。在我的情况下,问题是我在SQL2012中如何构建数据库的问题。我将表中的列设置为可空,这也是一个外键,虽然我认为你应该能够做到这一点但它在EF5中引起了一个问题。

一旦清除并从数据库更新图表,它们就会重新出现。

EF5 VS2013

答案 8 :(得分:0)

更换笔记本电脑后,当我更新实体框架模型时,代码中看不到存储过程

我做了什么来使这个工作

  • 更新 Visual Studio 2012 Update 5(不工作)
  • 从程序更新/修改(不工作)
  • 更新存储过程后,再次构建项目,然后转到 context.cs,右键单击并运行自定义工具(不工作)
  • 做 RND(有人说这个问题是由于 MSSQL 中的一些权限造成的)但不幸的是,我在 MSSQL 中做了很多权限但(不工作)
  • 安装 2019 并运行项目。现在一切正常

结论

  • Visual Studio 2012 存在错误(错误已在更新 1、2、3 和 4 中解决)
  • 更改 Visual Studio 版本将解决问题