2010-02-03 119 views
15

我有一个包含5个表格的db。在开始时,我已经添加了这些表格,但之后决定删除一些由于某些关系编译错误。重新添加到实体模型(edmx)时不显示表格

现在,当我想将它们添加回来,我打开EDMX文件 - >从数据库更新模型......我没有看到附加选项卡下的表,但只有“刷新”选项卡下。

我怎样才能将它们重新添加?

+0

右击在EDMX水平,说添加到TFS。 – user6225888 2017-02-07 00:57:37

回答

21

为了表重新添加到您的模型,你首先需要从模型中删除该表。 (表的列表是可见的[model.Store]树(见“模型浏览器” pane-你可以单击鼠标右键菜单打开它)。 当您运行“从数据库更新模型......”该表将出现在“添加”选项卡中的“更新向导”的第一步

步骤来完成:

  1. 闭上你的模型在Visual Studio中
  2. 打开您的.edmx。文件在 文本编辑器中。
  3. 搜索和删除 xml实体元素(请参阅下面的注释 )。
  4. 在Visual Studio中打开您的模型。
  5. 点击从 数据库更新模型。

要删除所有对表的引用您的模型:

  • 在“EntityContainer相关”元素, 删除所有“EntitySet的”子元素 有“名称”属性设置为 的值[TableNameToReAdd]。
  • 在 “EntityContainer相关”元素,删除所有 “AssociationSet”子元素,其中 一个“结束”元素存在已 他们的“EntitySet的”属性设置为 值[TableNameToReAdd]。
  • 在 “EntityContainer相关”元素,删除其中 具有“名称”属性设置为 值[TableNameToReAdd]所有 “的EntityType”子元素。
  • 在 “EntityContainer相关”元素,删除所有 '协会子元素,其中一个 “结束”元素存在有其 “角色”属性设置为值 [TableNameToReAdd]。
+1

非常好的答案;这帮助我解决了这个问题。 我不知道自这个答案发布以来事情是否发生了变化,但现在解决方案似乎更加简单。使用Model Browser窗口查看edmx文件,并找到要在Store树中重新添加的表格。只需删除节点,保存edmx,然后表格将在“添加表格”对话框中再次出现。 – 2012-07-16 11:14:41

2

你想让它在模型中删除后重新添加的实体。
除了编辑edmx文件还有另一种方法来做到这一点。
您将不得不临时从数据库中删除该表。

注:我只这如果数据库是不是在生产呢!

所以在SQL Server Management Studio中第一创建一个脚本
右击与您的模型中缺失的实体对应表(一个或多个)。选择'Script Table as','CREATE To','新查询编辑器窗口'。

第二步是删除表。再次右键单击并选择“删除”。确认删除。

早在Visual Studio中做模型的更新。

返回到SQL Server Management Studio并运行运行您刚刚创建的'create'脚本
表格将重新添加到您的数据库中。

在Visual Studio中,您现在可以再次执行更新,您的表格将显示在“添加”标签下!

0

除了上述需要从模型中删除的引用列表,请考虑删除AssociationSetMapping元素以及如果您的表与其他表具有关联关系。

5

我读这篇文章,其他搜索选项,但最后我发现了另一个回答,帮助我短了这个问题。

从错误消息看起来像你的一个表/视图没有 的主键。 EF需要每个表都有一个主键,以便 生成实体键。您仍然可以运行您的应用程序, 但我强烈建议您按照警告添加主键。

Link which solved my issue.

更新

如果一段时间后,你所做的一切都是罚款,仍然没有体现出任何的变化添加新列或更改数据类型。

的这个尝试手动更新的最佳方式,仍然是没有希望的,那么作为建议@mathijsuitmegen,删除和添加表,但这是喜欢最后的选择。

+0

这是我的问题。缺少我正在导入的表上的主键。 – 2016-12-21 10:07:58

2

更简单的解决方法是在Model Browser

[modelName].Store -> Tables/ViewS 

删除该表没有显示出来。然后右键点击模型“update from database”,表格应该在那里。

相关问题