代码首次迁移到生产数据库

时间:2016-06-21 15:31:40

标签: database ef-code-first entity-framework-6

我有两个数据库,DEV和TEST。

DEV由我维护,过去几周我一直在使用代码优先迁移进行开发。

TEST由DBA管理,他们希望提供SQL脚本以便将数据库更新到最新版本。

这是我第一次在这种情况下首先使用代码,我假设我需要使用命令

Update-Database -Script 

然而,它并不那么简单。

我正在寻找的是一种指定上次应用于数据库的迁移的方法。

例如,我的迁移编号为v1.0,1.1,1.2,1.3,1.4等

我知道TEST目前正在运行v1.2而DEV正在运行1.6,我想将TEST更新为1.5(请注意,这不是最新版本)构建该脚本的命令是什么?

我试过

update-database -Script -TargetMigration "v1.5" 

然而,这将迁移1.5与我的DEV数据库进行了比较,这给了我一个脚本,该脚本从v1.6回滚到dev,而不是脚本更新为1.6

我知道我可以将项目中的连接字符串更改为指向TEST数据库,然后运行命令,但这似乎是一种解决方法 - 必须有一种方法可以指定迁移开始和迁移编写脚本?

理想情况下,我希望在不将我的dev数据库恢复到与TEST相同的版本的情况下执行此操作。

1 个答案:

答案 0 :(得分:1)

如果在包管理器控制台中运行以下命令,则会获得Update-Database命令的详细帮助:

get-help Update-Database -detailed

从那里你可以看到参数,我认为这就是你需要的。

-SourceMigration <String>
    Only valid with -Script. Specifies the name of a particular migration to use
    as the update's starting point. If omitted, the last applied migration in
    the database will be used.

-TargetMigration <String>
    Specifies the name of a particular migration to update the database to. If
    omitted, the current model will be used.