如何使用实体数据模型设计器(实体框架)调试问题

时间:2012-12-23 18:49:51

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

我已经固有一些使用Entity Framework的项目,这使得很难进行任何更改。它对几乎所有表(cca 50表)使用 QueryViews ,当然还有存储过程。现在我必须在那里改变很多东西......重命名表,添加表,更改列等。

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

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

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

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

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

或者至少有一些方法可以看到其余的错误(除了100个错误)?

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

2 个答案:

答案 0 :(得分:0)

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

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

  2. 编写SSDL图层,该图层应反映数据库表。

  3. 编写映射层(在我的情况下使用QueryViews)。

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

  5. 重复下一个表格(如果您觉得更容易,可以选择更多表格)。

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

答案 1 :(得分:0)

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

Here is the error link