7

情况:有时数据库模式不是您认为的系统信息的理想表示,您可能无法更改它。我们一直在使用实体框架来创建一个更好的概念模型,以便在这种情况下进行编码。这意味着从数据库更新模型,然后通过设计器或直接使用文本编辑器通过 .edmx 文件自行更改。

问题:当您从数据库中更新模型时,所有您精心制作的更改都会被抛到窗外。这会使添加新实体变得非常麻烦,因为您基本上被迫通过直接编辑 .edmx 文件来完成。

问题:有没有办法让实体框架只更新来自数据库的选定实体?或者在添加新实体时是否可以告诉它不要理会模型的其余部分?

谢谢!

4

2 回答 2

5

不,没有办法使用内置设计器进行选择性更新。此外,设计师不会丢弃您的所有更改。它通常不涉及概念模型(除了一些罕见的情况,它会不断地重命名某些关联)和映射,但它总是删除存储模型并用新定义覆盖它。我在修改我的概念模型和映射以及从数据库运行更新方面没有任何问题。

Designer 在 Visual Studio 中的工作方式与其他任何功能一样 - 不支持触​​摸生成的代码(存储模型)的功能。一旦你这样做了,你就不能再使用数据库中的更新了。

商业工具可能支持更好的模型更新 - 你可以尝试一下。

于 2011-06-10T07:20:09.207 回答
1

如果通过更新选定的实体,您的意思是一个或多个表,您可以从模型中删除这些表,然后单独添加它们以通过单独选择它们来拉入更改表 - 我经常这样做,因为基础表已更改(特别是在开发过程中)。

在将实体/表拉入模型后,您最终会丢失对这些重新添加的实体所做的任何手动更改(即我经常重命名我的导航属性,然后在每次重新导入表后我需要手动重命名它们再次)。

于 2011-06-10T11:54:23.230 回答