获取初始实体框架迁移脚本

Eri*_* J. 11 entity-framework-4 ef-migrations

我刚刚安装了Entity Framework Migrations,为一个类添加了一个属性,并给了EF Migrations一个旋转.

我的开发数据库已及时更新.到现在为止还挺好.

现在,我想为生产数据库的初始使用迁移创建一个更改脚本.请注意,有一个预先存在的数据库,因为我将其应用于现有项目.

我的迁移是:

PM> Get-Migrations
Retrieving migrations that have been applied to the target database.
201204102238194_AutomaticMigration
201203310233324_InitialCreate
PM> 
Run Code Online (Sandbox Code Playgroud)

我以为我可以使用以下内容获取delta脚本:

Update-Database -SourceMigration:201203310233324_InitialCreate -TargetMigration:201204102238194_AutomaticMigration  -script
Run Code Online (Sandbox Code Playgroud)

但是,这给了我错误:

'201204102238194_Au​​tomaticMigration'不是有效的迁移.在为它们之间的升级编写脚本时,必须对源和目标使用显式迁移.

只是为了看看会发生什么,我颠倒了两个参数(向后迁移)并且在添加-force标志(删除了新列)之后确实获得了我期望的脚本.

如何获取第一次迁移的脚本?

And*_*bel 14

开始对现有数据库使用EF迁移的正确方法是首先添加包含当前数据库元数据的空迁移.

我认为您必须回滚到与初始数据库模式兼容的模型.然后运行以下命令:

add-migration InitialSchema -IgnoreChanges
Run Code Online (Sandbox Code Playgroud)

这应该为您提供初始迁移,它不执行任何操作,但包含当前模型的元数据.-IgnoreChanges如果您已扩展代码模型以涵盖数据库中已存在的更多表,您当然可以稍后添加迁移.

完成初始迁移步骤后,脚本就可以了.

通常我不建议使用自动迁移,除非您只打算仅使用自动迁移.如果您想要对数据库的更改进行某种控制(包括编写脚本),那么基于代码的迁移就是这样.