实体框架和迁移 - 如何在远程服务器上更新我的数据库?

oje*_*jek 5 sql migration asp.net-mvc entity-framework entity-framework-4

我为我的实体框架应用程序启用了迁移.现在,我想在远程服务器上更新我的数据库.我运行了这个命令:

PM> Update-Database -Script 
Run Code Online (Sandbox Code Playgroud)

所以它生成了一个sql脚本.但是,这个脚本包含我在数据库中实际拥有的所有元数据,而不是所做的更改; 所以,当我尝试在我的远程服务器上运行这个sql脚本时,它表示表已经存在.

我怎样才能生成只包含必要更新的sql脚本?

Dis*_*ile 7

您可以为此定位特定的迁移.如果您有一个名为Foo的迁移,例如:

Update-Database -TargetMigration Foo -Script
Run Code Online (Sandbox Code Playgroud)

它将为Foo迁移生成迁移脚本.将Foo替换为您需要在该服务器上运行的任何迁移.

Add-Migration InitialMigration
Add-Migration AddCustomers
Add-Migration AddProjects
Run Code Online (Sandbox Code Playgroud)

假设您在项目中进行了上述三次迁移,并且您的本地数据库已应用了所有这些迁移,但远程数据库只有InitialMigration.您可以运行以下命令:

Update-Database -SourceMigration InitialMigration -TargetMigration AddProjects -Script
Run Code Online (Sandbox Code Playgroud)

这将在远程服务器上应用两个迁移(AddCustomers和AddProjects).