我有一个下载的生产数据库,其中有一个空的MigrationHistory表(内容被意外删除)。
我的开发环境中有一个更新的代码模型(没有以前的迁移)。
换句话说,下载的生产数据库模式和开发环境代码模型之间不匹配-并且它们之间没有历史记录。
如何构建代码优先迁移(或获取SQL)以将生产数据库更新为新模型?
根据这里的建议,我尝试了以下方法:
Enable-Migrations
)Add-Migration InitialCreate -IgnoreChanges
)Update-Database
)这导致将一行添加到MigrationHistory表中。
但是,EF似乎认为这意味着当前的代码模型与数据库模式匹配(当然不匹配)。
如果我尝试添加一个新的迁移(Add-Migration UpdatedModel
),则此迁移将为空,由于代码模型和数据库不匹配,因此不应迁移。
如何获得代码优先的迁移(或SQL)以反映代码模型与数据库模式之间的变化?(如果我尝试Add-Migration InitialCreate
不带-IgnoreChanges
标志,那么我将从头开始创建整个数据库,正确地反映了代码模型,但是我想要更改。)
您要遵循的指南的第一步清楚地表明,您需要一个与数据库同步的模型。那真是失败了。
您需要做的是:
Enable-Migrations
在此步骤中,您的数据库和模型已同步。再执行几步,您就可以开始了:
Add-Migration
Update-Database
chan!知道了!顺便说一句,了解迁移命令的每个参数很重要,为此,请在Package Manager控制台中使用以下任何命令:
get-help Enable-Migrations -examples
get-help Enable-Migrations -detailed
get-help Enable-Migrations -full
简而言之:启用迁移时,Code First模型和数据库必须匹配,没有其他方法可以做到。这就是为什么您必须对数据库进行反向工程以获取初始同步并从此开始工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句