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_AutomaticMigration'不是有效的迁移.在为它们之间的升级编写脚本时,必须对源和目标使用显式迁移.
只是为了看看会发生什么,我颠倒了两个参数(向后迁移)并且在添加-force标志(删除了新列)之后确实获得了我期望的脚本.
如何获取第一次迁移的脚本?
And*_*bel 14
开始对现有数据库使用EF迁移的正确方法是首先添加包含当前数据库元数据的空迁移.
我认为您必须回滚到与初始数据库模式兼容的模型.然后运行以下命令:
add-migration InitialSchema -IgnoreChanges
Run Code Online (Sandbox Code Playgroud)
这应该为您提供初始迁移,它不执行任何操作,但包含当前模型的元数据.-IgnoreChanges如果您已扩展代码模型以涵盖数据库中已存在的更多表,您当然可以稍后添加迁移.
完成初始迁移步骤后,脚本就可以了.
通常我不建议使用自动迁移,除非您只打算仅使用自动迁移.如果您想要对数据库的更改进行某种控制(包括编写脚本),那么基于代码的迁移就是这样.