EF6.X代码迁移

2019-04-05  本文已影响0人  p了个f

Code First 代码迁移是为了时刻保持领域模型与数据库架构同步,Entity Framework 作为幕后辛勤的劳动者,通过一定程序的自动化使这一切变得更容易。

代码迁移命令

在Code First 模式中进行迁移(Migrations)常见的命令有如下4个:

命令使用

Enable-Migrations
默认生成文件夹及文件

运行Enable-Migrations 未指定任何其他参数,此时生成的迁移目录将是 Migrations,迁移的项目为包管理器控制台中的默认项目且迁移目录和上下文包含在同一项目中。

当执行带有参数的命令时:

Enable-Migrations -ContextTypeName EfDbContext -MigrationsDirectory JeffckMigrations
Enable-Migrations 带参数命令 生成指定文件夹名称

此命令一般用在我们修改了POCO后,需要执行该命令。将POCO的变更信息采用代码的方式记录下来,方便后面同步更新到数据库中。

语法:
Add-Migrations 自定义脚本名称

语法:
Add-Migration First -IgnoreChanges
表示将忽略当前模型的改变。

通过运行 Update-Database 而未指定其他任何参数,说明更新数据库到最近的迁移。

运行命令:Update-Database -Script -SourceMigration $InitialDatabase

该命令会生成一个脚本,可以将目前任何版本的数据库升级到最新版本。生成的脚本包含检查_MigrationHistory表并且应用更改的逻辑。


迁移的本质

每一个迁移脚本都对应数据库中“_MigrationHistory”表中的一条数据。

_MigrationHistory这个表是从哪里来的?有什么用?

_MigrationHistory 表有 Entity Framework 自动创建,用于跟踪已应用于数据库的状态更改。当实体框架将迁移应用于数据库时,会查询_MigrationHistory 表并将其与存储在已编译项目中的迁移进行比较,并应用缺少的迁移。

当我们在NuGet管理器控制台运行Update-Database 时,发生了什么呢?

我们如何解决团队协作而导致的迁移问题呢?

团队可以采用自动迁移方式解决该问题,可是这样会导致后期难以维护,所以我们采用手动去维护,同时保持同时迁移的记录可追踪。采用以下4步骤进行:

(1)、回滚模型

语法:

Update-Database -TargetMigration 迁移名

采用此命令,可以将当前数据库回滚到指定迁移时的状态。
(2)、重命名和更新时间戳
(3)、更新模型

强制重新检查模型改变
语法:

Add-Migration 迁移名称 -Force

(4)、迁移模型

对于EF迁移,我们需要记住以下三点:

上一篇下一篇

猜你喜欢

热点阅读