为什么我的edmx文件没有更新

kwv*_*v84 6 c# asp.net entity-framework

我有一个数据库第一个ASP.NET MVC 5 EF6项目。我正在使用VS2015 CE。当我更改数据库(SQL Server 2012)时,然后去VS更新我的edmx文件,如下所示:

  • 在解决方案资源管理器中双击edmx文件
  • 在edmx文件中,右键单击空白,然后选择“从数据库更新模型”选项
  • 我点击“完成”按钮
  • 我重建解决方案

当我有一个列ID为Column1,Column2的表,并且将Column2更改为Column2Changed时,我的edmx拥有一个ID为Column1,Column2,Column2Changed而不是ID,Column1,Column2Changed的模型。

另外,当我更改列的数据类型时,此更改不会应用到我的edmx中。

Mik*_*ill 9

这是实体框架的一个众所周知的问题。

“从数据库更新模型”仍然很容易出错。有时它可以工作,但有时却不行。

就个人而言,我只是从我的.edmx文件中删除“已更新”表,然后重新添加它。这样看来工作还可以。

  • *(非常安静)*我知道它不再受支持,但是对于基本数据库任务,我仍然使用“ LINQ to SQL”而不是EF。它只是*有效*。但是不支持,所以不要这样做。但这有效。但是不要这样做。除非你要。但是你不应该。但是你可以。但是不应该。我现在去投票。 (5认同)
  • 哇,这还是个问题吗?我大约在3个版本之前遇到过此类问题,这是我停止使用EF的原因之一,但我认为他们现在可以解决此问题。 (4认同)
  • 本质上,这不是一个“问题”。我很确定EDMX更新过程是_designed_,以便在更改数据库后不删除模型中的属性。毕竟,您可以在模型中拥有不映射到数据库表的属性。由程序员决定应删除(orphan)属性。 (2认同)
  • ⚠️当表在同一个表上有多个FK时要小心,这会使EF开始调用作为NameTable,NameTable1,NameTable2的引用,因此如果结构发生任何更改,这些引用可能会生成使EF更改此命名顺序的引用,从而使您的代码得以编译但与您之前预期的逻辑不同 (2认同)

小智 5

这对我有用:

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

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

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

这将更新 .tt 文件。