【问题标题】:Tables don't show when re-adding them to entity-model (edmx)将表格重新添加到实体模型(edmx)时不显示
【发布时间】:2011-01-12 11:15:34
【问题描述】:

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

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

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

【问题讨论】:

  • 在 edmx 级别右键单击并说添加到 TFS。

标签: entity-framework edmx entity-model


【解决方案1】:

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

要完成的步骤:

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

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

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

【讨论】:

  • 很好的答案;这帮助我解决了问题。我不知道自发布此答案以来情况是否发生了变化,但现在解决方案似乎更简单了。使用 edmx 文件的模型浏览器窗口,并在存储树中找到要重新添加的表。只需删除节点,保存 edmx,表格将再次出现在“添加表格”对话框中。
【解决方案2】:

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

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

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

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

返回 Visual Studio 执行 模型更新

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

      Link which solved my issue.

      更新

      如果某个时候你做的一切都很好,无论是添加新列还是更改数据类型,都不会反映所做的更改。

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

      【讨论】:

      • 这是我的问题。我尝试导入的表中缺少主键。
      • 这是我的问题。
      【解决方案5】:

      一个更简单的解决方案是在

      下的Model Browser
      [modelName].Store -> Tables/ViewS
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-08-08
        • 1970-01-01
        • 2012-06-14
        • 2013-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多