17

我有一个有 5 个表的数据库。一开始,我已经添加了这些表,但后来由于一些关系编译错误决定删除一些。

现在,当我想将它们添加回来时,我正在打开 edmx 文件 -> 从数据库更新模型...我在添加选项卡下看不到这些表,而只是在“刷新”选项卡下。

我怎样才能将它们添加回来?

4

5 回答 5

28

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

完成步骤:

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

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

  • 在“EntityContainer”元素中,删除所有“Name”属性设置为值 [TableNameToReAdd] 的“EntitySet”子元素。
  • 在“EntityContainer”元素中,删除存在“End”元素且“EntitySet”属性设置为值 [TableNameToReAdd] 的所有“AssociationSet”子元素。
  • 在“EntityContainer”元素中,删除“Name”属性设置为值 [TableNameToReAdd] 的所有“EntityType”子元素。
  • 在“EntityContainer”元素中,删除存在“End”元素且“Role”属性设置为值 [TableNameToReAdd] 的所有“Association”子元素。
于 2010-02-05T16:48:46.620 回答
10

我阅读了这个和其他搜索选项,但最后我找到了另一个答案,可以帮助我解决这个问题。

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

链接解决了我的问题。

更新

如果有一段时间你做的一切都很好,仍然没有反映添加新列或更改数据类型的更改。

最好的方法是尝试手动更新,但仍然没有希望,然后按照@mathijsuitmegen 的建议,删除并添加表,但这是首选的最后一个选项。

于 2015-07-11T14:40:05.843 回答
3

Model Browser下面是一个更简单的解决方案

[modelName].Store -> Tables/ViewS

删除未显示的表。然后右键单击模型“ update from database”,表格应该在那里。

于 2016-01-14T09:32:29.060 回答
2

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

注意:如果数据库尚未投入生产,我只会这样做!

因此,在 SQL Server Management Studio 中首先创建一个脚本
右键单击与模型中缺少的实体相对应的表。选择“脚本表为”、“创建到”、“新查询编辑器窗口”。

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

回到 Visual Studio 中更新模型

返回 SQL Server Management Studio 并运行您刚刚创建的“创建”脚本。
该表将再次添加到您的数据库中。

在 Visual Studio 中,您现在可以再次进行更新,您的表格将显示在“添加”选项卡下!!!

于 2010-10-13T07:51:58.057 回答
0

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

于 2013-12-07T07:05:09.190 回答