1

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

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

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

使用 QueryViews 的映射可能使其更加复杂。众所周知,设计器无法正确使用 QueryViews(无法使用设计器对其进行编辑),并且实体框架引擎甚至无法识别来自 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 中更新模式的理想方法吗?

4

2 回答 2

1

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

这是错误链接

于 2016-10-26T06:58:23.103 回答
0

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

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

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

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

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

  5. 对下一张桌子重复(或更多桌子,如果你觉得更容易的话)。

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

于 2013-02-17T14:58:50.987 回答