更新你的EDMX,以反映你的数据库(.net LINQ实体)

  • 所以我有我的edmx。
  • 然后我改变我的数据库一点点,改变一列从一个非空,以允许NULL。
  • 我进入我的edmx,右键单击并select“从数据库更新模型”

现在我进入我的程序,它并没有实际更新…我不能把一个空列。 我需要做什么来正确地更新edmx? 谢谢。

从数据库中select更新模型是更新EDMX的最佳方法。 有一些属性在概念图层上没有得到更新。

通过在模型查看器工具箱中查看,确保您的存储层已经更新。 如果商店已经正确更新,那么你没事了,你的数据库是同步的。 如果是这样,请进入可视化devise器,单击字段,转到属性,然后更新概念侧的NotNull属性。

从EDMX更新/删除并不总是function。 如果模型没有更新点击从数据库更新模型让我们说,当你已经更新数据库中的视图/表,请执行以下操作:

1)从模型图中删除视图/表格
2)将EDMX切换到xml视图(右键单击edmx文件并select“打开方式”)
3)search并删除xml实体元素
4)切换回EDMX视图
5)点击从数据库更新模型

这应该反映你对你的EDMX进行的任何改变。 这很麻烦,但工作完美无瑕。

在一个理想的世界里,我期望从数据库更新模型同步数据库到EDMX的变化。 但是,大部分时间都不行。

我已经成功完成了这个(VB.Net)。

  1. 根据需要/要求更新数据库
  2. 在EDMX模型中select“从数据库更新”,graphics模型将正确显示新的结构/表格
  3. 展开项目,以显示所有相关的文件
  4. 具有“tt”扩展名的两个文件是重要的文件:先取出没有.Context的文件。 在tt延期之前。 右键单击它并select运行自定义工具:

运行自定义工具

  1. 使用.Context对.tt文件执行相同的操作。 在它的名字。 所有的代码和逻辑模型类都将被更新。

是的,它大部分时间不工作: – /

“最佳方法”(因为它是系统工作的)是删除EDMX文件并再次生成。 但是不要忘记在App.config中删除连接string(否则VS2008 wizzard会为默认实体名称添加一个后缀),并清除caching。

我希望这些工具能够在下一个版本中更好地发挥作用,因为它会显着降低生产力。

这是最快最简单的方法:

  1. 从.edmx图中删除视图/表。
  2. 现在使用从数据库更新模型重新添加表。

1.更新EDMX文件后build立工程。

2.右键单击解决scheme资源pipe理器中的.tt文件。

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

这将更新.tt文件。

来源: 这里 !

在VS的XML编辑器中打开edmx文件,并检查尝试更新时是否存在错误。

<!--Errors Found During Generation: warning 6013: The table/view 'foo.dbo.snafu' does not have a primary key defined and no valid primary key could be inferred. This table/view has been excluded. To use the entity you will need to review your schema, add the correct keys and uncomment it. <EntityType Name="snafu"> <Property Name="snafu_column" Type="smallint" /> </EntityType>--> 

在上面的情况下…将主键添加到有问题的表中导致“从数据库更新模型”工作。

它不会更新例如string属性的最大长度!

如果你使用TFS,删除文件并不好,你想保留历史logging,不要影响其他人。

对我来说,它有一个tiniy单独的项目,我可以用来完全重buildedmx文件,我打开它在XML中,复制粘贴到现有的,并移动模型中的一个形状,以便VS重新创build.cs文件。 瞧,它现在更新。

这个答案更好: https : //stackoverflow.com/a/23886016/1014884

任何手动编辑的错误已经成熟,或者在有人使用像向导这样的工具时会丢失。 使用向导删除和更新要好得多。

从devise器视图中删除所有表,然后更新对我有用