45
  • 所以我制作了我的 edmx。
  • 然后我稍微更改了我的数据库,将列从 NOT NULL 更改为允许 NULL。
  • 我进入我的 edmx,右键单击并选择“从数据库更新模型”

现在我进入我的程序,它实际上并没有更新......我不能在列中放置一个空值。我该怎么做才能正确更新 edmx?谢谢你。

4

11 回答 11

81

从 EDMX 更新/删除并不总是有效。如果模型在单击从数据库中更新模型时没有更新,假设您在数据库中更新了视图/表,请执行以下操作:

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

这应该反映您对数据库所做的任何类型的更改到您的 EDMX。这很麻烦,但可以完美运行。

在一个理想的世界中,我希望数据库中的更新模型能够将数据库中的更改同步到 EDMX。但是,它在大多数情况下都不起作用。

于 2009-10-08T01:33:46.380 回答
20

我成功完成的是这个(VB.Net)。

  1. 根据需要/需要对数据库进行更新
  2. 在 EDMX 模型中选择“从数据库更新”,图形模型将正确显示新的结构/表
  3. 展开项目,使其显示所有相关文件
  4. 扩展名为“tt”的两个文件很重要:首先取一个没有.Context 的文件。在 tt 扩展之前。右键单击它并选择运行自定义工具:

运行自定义工具

  1. 对带有 .Context 的 .tt 文件执行相同的操作。以其名义。您的所有代码和逻辑模型类都将更新。
于 2012-10-09T12:42:09.493 回答
14

从数据库中选择更新模型是更新 EDMX 的最佳方法。某些属性不会在概念层上更新。

通过在 Model Viewer 工具箱中查看 Store 层,确保其已更新。如果 Store 已正确更新,那么您就可以了,并且您的数据库已同步。如果是这样,请进入可视化设计器,单击该字段,转到属性,然后更新概念侧的 NotNull 属性。

于 2009-03-27T15:52:05.733 回答
5

是的,它大部分时间都不起作用:-/

“最好的方法”(因为它可以系统地工作)是删除 EDMX 文件并重新生成它。但是不要忘记在 App.config 中移除连接字符串(否则 VS2008 wizzard 会在默认实体名称后添加一个后缀),并清除缓存。

我希望这些工具在下一个版本中能更好地工作,因为它大大降低了生产力......

于 2009-12-15T15:48:41.110 回答
4

这是最快最简单的方法:

  1. 从 .edmx 图表中删除视图/表格。
  2. 现在使用从数据库中更新模型重新添加表。
于 2014-06-13T21:39:52.070 回答
4

1.更新EDMX文件后编译工程。

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

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

这将更新 .tt 文件。

来源:这里

于 2015-04-24T11:35:37.963 回答
2

在 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>-->

在上述情况下......向相关表添加主键导致“从数据库更新模型”工作。

于 2010-01-14T19:01:12.463 回答
2

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

任何手动编辑都可能出现错误,或者当有人使用任何工具(如向导)时会丢失。使用向导删除和更新要好得多。

于 2014-10-02T16:46:23.320 回答
1

例如,它不会更新字符串属性的最大长度!

如果您使用 TFS,删除文件是不好的,您希望保留历史记录而不影响其他人。

对我来说,它有一个单独的小项目,我可以用它来完全重新创建 edmx 文件,我在 xml 中打开它,将粘贴复制到现有的,然后在模型中移动一个形状,以便 VS 重新创建 .cs 文件. 瞧,它现在已更新。

于 2010-10-27T20:09:25.707 回答
1

我在数据库中创建的视图没有出现在设计器中(在选择“从数据库更新模型...”并在视图名称旁边添加一个检查之后)。在将 EDMX 切换到 xml 视图之前,我没有看到任何错误消息:

  • 右键单击 edmx 文件
  • 选择“打开方式...”
  • 选择“自动编辑器选择器 (XML)”
  • 单击查找并搜索您的视图名称

在 edmx xml 中我发现:

“在生成过程中发现错误:警告 6013:表/视图'(视图名称)'没有定义主键,并且无法推断出有效的主键。此表/视图已被排除。要使用实体,您将需要检查您的架构,添加正确的键,然后取消注释。”

我修改了视图以具有主键。然后我打开 edmx 设计器并运行“从数据库更新模型...”,然后视图按预期出现在设计器中,没有错误。

于 2018-07-25T13:17:17.053 回答
0

从设计器视图中删除所有表格并在之后更新对我有用

于 2017-09-19T08:38:12.410 回答