数据库迁移

我们如果已经使用了使用CodeFirst创建数据库,但是突然又想增加或者删除一个字段的时候,如果直接去数据库里把数据库删了在重新建立数据库也是可以的,只不过非常麻烦,我们使用数据库迁移就不用这么麻烦,数据库迁移就相当于更新数据库。

数据库迁移命令:

PluralizingTableNameConvention
Enable-Migrations启用数据库迁移
Enable-Migrations –EnableAutomaticMigrations 启动自动迁移
Update-Database 更新到数据库
Add-Migration needname 手动迁移(防止一些数据库丢失的情况,类似做一个日志,方便自己查看)

数据库迁移步骤:

比如:我们现在的用户表里有如下字段:

javafx 数据库迁移工具 数据库迁移代码_字段

第一步

我们在它的实体映射里添加一个Hobby字段:

javafx 数据库迁移工具 数据库迁移代码_javafx 数据库迁移工具_02

第二步:

我们去找到扩展包

javafx 数据库迁移工具 数据库迁移代码_数据库迁移_03

第三步:

打开之后在控制台里输入:
Enable-Migrations –EnableAutomaticMigrations

如下图:还要切换上下文对象

javafx 数据库迁移工具 数据库迁移代码_数据库迁移_04

输入后回车

javafx 数据库迁移工具 数据库迁移代码_数据库_05

启用数据迁移后,会自动给你建一个文件夹和类:类里就是存你的迁移对象

javafx 数据库迁移工具 数据库迁移代码_字段_06

因为方法里面是true,所以可以使用自动迁移来启用迁移

javafx 数据库迁移工具 数据库迁移代码_数据库迁移_07

第四步:

输入Update-Database执行更新

javafx 数据库迁移工具 数据库迁移代码_javafx 数据库迁移工具_08

第五步:

可以看到数据库里已经有了

javafx 数据库迁移工具 数据库迁移代码_javafx 数据库迁移工具_09

我们如果要改变数据库里已经有的字段的长度的话,还要多一步操作。

比如:我们对已有自动Hobby设置长度:

[StringLength(64)]
public string Hobby { get; set; }

设置完后直接更新数据库迁移

发现无法执行

javafx 数据库迁移工具 数据库迁移代码_数据库_10

因为,它怕数据丢失,因为,如果你有个字段长度是128,你改为64,里面的内容就很有而可能丢失,所以你要自己确认一遍,才会给你更新。

第一步:执行手动迁移命令:

Add-Migration needname,

javafx 数据库迁移工具 数据库迁移代码_数据库迁移_11

第二步输入命令后回车:

javafx 数据库迁移工具 数据库迁移代码_数据库迁移_12


可以看到它会给你生成一个更改时间为名字的日志,就是用来当证据,你自己改的。造成数据丢失不关它的事。

第三步输入更改命令Update-Database 修改即可

这时候查看数据库发现字段长度也更改了

javafx 数据库迁移工具 数据库迁移代码_字段_13