我有一个有 5 个表的数据库。一开始,我已经添加了这些表,但后来由于一些关系编译错误决定删除一些。
现在,当我想将它们添加回来时,我正在打开 edmx 文件 -> 从数据库更新模型...我在添加选项卡下看不到这些表,而只是在“刷新”选项卡下。
我怎样才能将它们添加回来?
我有一个有 5 个表的数据库。一开始,我已经添加了这些表,但后来由于一些关系编译错误决定删除一些。
现在,当我想将它们添加回来时,我正在打开 edmx 文件 -> 从数据库更新模型...我在添加选项卡下看不到这些表,而只是在“刷新”选项卡下。
我怎样才能将它们添加回来?
为了将表重新添加到模型中,您首先需要从模型中删除表。(表列表在 [model.Store] 树中可见(参见“模型浏览器”窗格 - 您可以从鼠标右键菜单中打开它)。当您运行“从数据库更新模型...”时,表将出现在“更新向导”第一步的“添加”选项卡中。
完成步骤:
要删除对模型中表的所有引用:
我阅读了这个和其他搜索选项,但最后我找到了另一个答案,可以帮助我解决这个问题。
从错误消息看来,您的表/视图之一没有主键。EF 需要每个表都有一个主键才能生成实体键。您可能仍然可以运行您的应用程序,但我强烈建议您按照警告添加主键。
更新
如果有一段时间你做的一切都很好,仍然没有反映添加新列或更改数据类型的更改。
最好的方法是尝试手动更新,但仍然没有希望,然后按照@mathijsuitmegen 的建议,删除并添加表,但这是首选的最后一个选项。
Model Browser
下面是一个更简单的解决方案
[modelName].Store -> Tables/ViewS
删除未显示的表。然后右键单击模型“ update from database
”,表格应该在那里。
您想在模型中删除实体后重新添加它。
除了编辑 edmx 文件之外,还有另一种方法可以做到这一点。
您将不得不从数据库中临时删除该表。
注意:如果数据库尚未投入生产,我只会这样做!
因此,在 SQL Server Management Studio 中首先创建一个脚本:
右键单击与模型中缺少的实体相对应的表。选择“脚本表为”、“创建到”、“新查询编辑器窗口”。
第二步是删除表。再次右键单击并选择“删除”。确认删除。
回到 Visual Studio 中更新模型。
返回 SQL Server Management Studio 并运行您刚刚创建的“创建”脚本。
该表将再次添加到您的数据库中。
在 Visual Studio 中,您现在可以再次进行更新,您的表格将显示在“添加”选项卡下!!!
除了需要从模型中删除的上述引用列表之外,请考虑删除AssociationSetMapping元素,以防您的表与其他表具有关联关系。