使用EF代码优先迁移进行脱机部署

时间:2014-07-01 08:17:58

标签: asp.net-mvc entity-framework ef-code-first ef-migrations

我们开发了一个运行Microsoft堆栈的Intranet Web应用程序,该堆栈随时在客户端网络上进行更新。更新是通过两个组件手动完成的:

  • 在旧的应用程序文件的顶部安装/解压缩新的应用程序文件
  • 执行运行先前版本和当前版本之间增量的SQL脚本

我们正在将代码库从ASP.NET WebForms / ADO.NET迁移到ASP.NET MVC / Entity Framework 6.1。我们正在使用代码优先迁移进行开发,并进行自动迁移设置。

所以我的问题是:我们现在如何将其转化为生产?网络上的大多数帖子似乎都考虑使用WebDeploy或类似的连接方法,但我们的文件是分发的(通过电子邮件或下载),然后“离线”安装。有没有办法可以利用迁移来更新数据库,或者我们是否坚持使用SQLDelta或等效生成更改脚本以在客户端上执行?

借助Entity Framework的强大功能来抽象出存储的许多物理方面,似乎反直觉我们将被简化为特定于实现的部署方法。非常感谢。

1 个答案:

答案 0 :(得分:2)

这很容易。

迁移具有可在程序包管理器控制台中运行的命令,以便为应用程序迁移创建SQL脚本,以便您可以保存它们并通过电子邮件将其发送给客户。这些是执行此操作所需的最低参数(您可能需要添加其他参数以指定其他一些选项):

Update-Database -SourceMigration "Origin" -TargetMigration "Destination" -Script

使用此命令,您可以告诉您要创建一个脚本,该脚本可以转换" Origin"陈述到"目的地" state,其中这些是相应迁移的名称。您将获得一个完整的SQL脚本来应用这些更改。

对于这个场景,我更喜欢创建手动迁移,因为我可以更好地控制他们的名称,这样我就可以更容易地识别起源和目标迁移。

顺便说一句,如果您需要有关所需参数的额外帮助,可以运行

Update-Database -?

而且,如果您阅读输出的最后几行,您会看到其他选项:

To see the examples, type: "get-help Update-Database -examples".
For more information, type: "get-help Update-Database -detailed".
For technical information, type: "get-help Update-Database -full".

当然,这适用于其他命令。