将实体模型(edmx)重新添加时,表格不显示

时间:2010-02-03 03:35:40

标签: entity-framework edmx entity-model

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

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

如何将它们添加回来?

5 个答案:

答案 0 :(得分:24)

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

完成步骤:

  1. 在Visual中关闭您的模型 工作室。
  2. 在a中打开.edmx文件 文本编辑器。
  3. 搜索并删除 xml实体元素(参见注释 下面)。
  4. 在Visual中打开您的模型 工作室。
  5. 点击更新模型 数据库中。
  6. 删除模型中对表格的所有引用:

    • 在'EntityContainer'元素中, 删除所有'EntitySet'子元素 将“名称”属性设置为 值[TableNameToReAdd]。
    • 在 'EntityContainer'元素,全部删除 'AssociationSet'子元素在哪里 存在一个'End'元素 他们的'EntitySet'属性设置为 值[TableNameToReAdd]。
    • 在 'EntityContainer'元素,全部删除 'EntityType'子元素在哪里 将“名称”属性设置为 值[TableNameToReAdd]。
    • 在 'EntityContainer'元素,全部删除 '关联'子元素在哪里 'End'元素存在,有他们的 'Role'属性设置为值 [TableNameToReAdd]。

答案 1 :(得分:8)

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

  

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

Link which solved my issue.

<强>更新

如果某些时候你做得很好,仍然没有反映更改添加新列或更改数据类型。

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

答案 2 :(得分:3)

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

[modelName].Store -> Tables/ViewS

删除未显示的表格。然后右键点击模型&#34; update from database&#34;并且桌子应该在那里。

答案 3 :(得分:2)

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

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

所以在SQL Server Management Studio中首先创建一个脚本
右键单击与模型中缺失的实体对应的表格。选择“Script Table as”,“CREATE To”,“New Query Editor Window”。

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

返回Visual Studio,执行模型更新

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

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

答案 4 :(得分:0)

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