【问题标题】:How to debug problems with The Entity Data Model Designer (Entity Framework)如何使用实体数据模型设计器(实体框架)调试问题
【发布时间】:2016-10-26 14:58:23
【问题描述】:

我继承了一些使用实体框架的项目,这使得很难进行任何更改。它对几乎所有表(cca 50 个表)和存储过程都使用 QueryViews。现在我必须改变很多东西......重命名表,添加表,更改列等。

当我尝试使用 "Update Model from database ..." 向导时,比在更新后(我添加/删除表并使用向导刷新其他表)从数据库实体数据模型设计器渲染停止工作...只有空白窗口,文本“实体数据模型设计器无法显示您请求的文件。

所以我尝试了不同的方法(例如手动编辑 edmx 文件),但问题仍然存在。编辑器只显示“实体数据模型设计器无法显示您请求的文件。”

使用 QueryViews 的映射可能使其更加复杂。众所周知,设计器无法正确使用 QueryViews(无法使用设计器对其进行编辑),Entity 框架引擎甚至无法识别来自 CSDL 的列是使用 QueryViews 映射的,并且会抱怨每一列(使用 QueryView 映射)“错误 11009:属性 'XXX' 未映射。”我看到 100 个这样的错误。也许在第 100 个错误之后的某个地方,有一些提示(以其他错误的形式)如何解决 Designer 的问题,但我不知道如何查看它们。 100 的限制很可能是在 VS2010 中硬编码的 (http://stackoverflow.com/questions/2880936/how-to-increase-error-limit-in-visual-studio)。

顺便说一句。代码(实体类等)生成没有问题。

所以,问题是:有没有办法查看一些日志或其他内容,在哪里可以说明为什么实体框架数据模型设计器无法呈现任何内容?

或者至少有什么方法可以查看其余的错误(除了 100 个错误)?

除了使用向导之外,还有人知道在 EF 中更新架构的理想方法吗?

【问题讨论】:

  • 您可以尝试使用 EdmGen 生成模型 - 这有点麻烦,但会显示所有错误。

标签: visual-studio-2010 entity-framework entity-framework-4


【解决方案1】:

尝试添加新的EDMX并右键>>用>> XML编辑器打开,然后你可以在EDMX的一个空模型定义中看到一个完整的集合。因此,您可以比较两个 EDMX 并检查是否缺少 EDMX 的哪一部分。

Here is the error link

【讨论】:

    【解决方案2】:

    最后,我只是通过编辑 xml 手动完成所有更改。但是,我使用模型设计器(集成在 VS for EF 中的 GUI)来创建整个 CSDL 层。所以我的做法是按照正确的顺序仔细选择表,并在以下步骤的多次迭代中一一添加:

    1. 使用模型设计器为所选表创建 csdl 层,包括与现有表的所有关系。这至少保证了设计器以后可以使用,并且省去了手动编写 CSDL 对象。

    2. 编写 SSDL 层,它应该反映 DB 表。

    3. 编写映射层(在我的例子中使用 QueryViews)。

    4. 尝试编译并解决所有编译错误。

    5. 重复下一张表(或更多表,如果您觉得更容易)。

    我希望这会对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2010-09-28
      • 2018-10-03
      • 2020-11-16
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多