【问题标题】:Updating EF Model: tables missing更新 EF 模型:缺少表
【发布时间】:2011-05-05 23:24:01
【问题描述】:

我有一个指向远程 SQL Server 2005 数据库的实体框架 (3.5) 数据模型。我在数据库中的表中添加了一些字段,并想更新模型。我的理解是刷新不起作用,您必须删除并重新添加表,但是当我删除它然后转到“从数据库更新模型”时,该表不在列表中!

如果我向数据库添加一个新表,它会出现在列表中,但如果我尝试删除然后重新添加一个,它就不存在了!我在其他项目中做过很多次,但我不明白为什么它不适用于这个项目。

有什么想法吗?

【问题讨论】:

    标签: .net sql-server entity-framework


    【解决方案1】:

    如果您打开模型的模型浏览器,则有两个部分,即您的模型和商店。我知道我们曾经遇到的一个问题是,一个对象将从模型中删除,但它的定义仍会在商店中。那时我们每次更新 EF 都会更新 store 中的定义,但不会重新生成模型中的部分,因此看起来它根本没有被导入(基本上听起来像你的准存在)重新陷入)。确保通过 Visual Studio 从两个位置删除它,然后重新更新,这将强制 EF 将其视为新实体并为两个部分生成对象。

    第二种(也是更痛苦的)解决方案是打开模型的 XML 文件并搜索实体名称,然后删除匹配的对象。这有点棘手,不幸的是,我花了很长时间才能准确地指导你如何不被它击中自己的脚。

    【讨论】:

    • 谢谢。我手动编辑了商店 XML 并解决了症状。但问题仍然存在(即表已从模型中删除但未存储)。希望我不必从头开始重新生成整个模型,我有很多 store proc 函数:(
    • 将字段添加到表中应该可以正常工作,如果您将字段添加到数据库然后更新,删除将留下一个字段,然后您必须在界面中删除。我确实记得我们遇到了与您类似的问题,但不是我们正在做的事情。我们发现我们可以暂时重命名数据库中的表,更新模型(表已被删除,因为它已被“删除”),然后重新命名表并重新添加它,这样可以解决留下碎片的问题后面。
    • 谢谢!你的帖子缓解了数小时的挫败感。这似乎仍然是 Visual Studio 2013 中的问题
    • 在vs2017中仍然是一个问题。
    • 啊,它是……在模型浏览器中|数据库 |表。我尝试添加的表已在商店中列出,因此它不会显示在我可以从中添加的表列表中。从商店中删除表后,我再次运行“从数据库更新模型”。这次表格在列表中可见,我可以添加它!
    【解决方案2】:

    您应该在设计器中从模型中删除表格,然后重新添加表格。

    【讨论】:

    • 谢谢,但我在我的问题中说我已经尝试过了。
    猜你喜欢
    • 1970-01-01
    • 2016-04-05
    • 2016-04-02
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    相关资源
    最近更新 更多