在实体框架更新数据库模式(Update database schema in Entity Fram

2019-07-31 05:01发布

我安装VS SP1和发挥各地与实体框架。

我从现有的数据库创建的模式,并尝试了一些基本操作。

大多数的很顺利,除了数据库模式的更新。

我在每一个基本方式更改了数据库:

  • 增加了一个新的表
  • 删除的表
  • 增加了一个新的列到现有的表
  • 从现有的表中删除的列
  • 改变现有的列的类型

前三个得很顺利,但该类型的变化和列删除并没有跟随数据库的变化。

有没有什么办法让是从设计师的工作? 或者是它目前还不支持? 我没有找到任何相关的材料还,但仍在寻找。

Answer 1:

我猜想,可能是那些没有发生,因为他们会打破建立对现有的代码,但是这只是我的猜测而已。

这里是我的逻辑:

首先,EF应该是超过1:1的映射表,所以它很可能只是因为你是从表A中删除列并不意味着该实体,不应该有一个属性说明。 你可能只是其映射属性到另一个表。

其次,改变类型可能只是突破的基础之上。 这是那里唯一理由。



Answer 2:

我发现,在一般情况下,仍存在与“更新模型从数据库”功能相当多的错误。

键是杀手,我 - 我有有我做出一个外键关系的任何修改或一个主键添加到表并正确有更新工作(因为它会给生成的编译错误代码) - 但要解决它删除的一个简单的事情,问题的模型,并重新导入(只需要一分钟) - 这是不太理想很明显,但我从来没有从“新鲜”进口了故障。



Answer 3:

从我所看到设计师的演示,它不是一个完美的工具。 这是一个1.0版本的产品,所以它必然有一些痛点。 改变类型为其中的一个看起来。 从看设计师和代码生成,我计算过,一个将打破无论是在编译时(不太可能),或在运行时(当实际执行模型)。



Answer 4:

你需要自己从设计师或XML文件来删除列。



Answer 5:

正如前面提到的,您可以直接删除从设计师的列。 至于改变列的数据类型:刚刚刷新从数据库模型,然后转到表映射,并选择您在DB改变列。 右边的值代表模型,奇怪的是这并没有得到自动更新,而只是选择列的权利和去属性和更改数据类型在那里。 它应该成为一个下拉菜单。

干杯。

红润



Answer 6:

我建造像你要求的类似的应用。 但我的解决办法是困难的。 我会尽量告诉;

  1. 你必须创建自己的数据库管理clases和这些对象将负责创建,更新数据库架构(我手动创建)。

  2. 我看到一篇好文章和源代码ADO.NET团队博客 ,那么你也可以从这个博客下载EDMTools,它的开源。 而且你还可以实现从模型生成和更新程序到您的项目。

  3. 最后,当您的模式改变你应该重新创建和绑定您的模型,并在运行时重建数据集。 但是你要知道最重要的想法,你应该配合你的数据模型装配到您的项目与松耦合(看看这个帖子 )

    另一种方式,应等待EF 4.0版(CTP它现在1),他们宣布,他们将提供创建,删除,更新DatabaseScript功能。

好锁



Answer 7:

我这样做(和我做所有你提到的事,再加上重命名列)的方式是通过更改数据库和再生使用EF代码第一次的EF代码。

我不与EF代码优先类为好或坏的(包括关系胡说命名列),以缓解这一进程篡改。

没有设计师或ORM架构发电机就能更改您的生产数据库,如果它已在它有限的数据。 这就是为什么你应该总是检查你是否在DB的变化是可行的,试戴开发数据库,​​然后调整代码以反映更改启动。



文章来源: Update database schema in Entity Framework