从源代码管理中发布时如何为Windows Azure启用Code First Entity Framework迁移?

时间:2014-04-11 13:14:51

标签: c# entity-framework azure ef-code-first azure-web-sites

我有一个项目,我通过源代码控制自动发布到Azure。我已将azure配置为具有适用于实体框架上下文的连接字符串。我需要针对与网站关联的azure数据库自动运行迁移。

我知道发布对话框中有一个选项,但是我需要手动添加web.config中的任何魔法来告诉azure应用迁移。从源代码控制中进行azure运行迁移需要什么,如果不可能,还有另一种方法吗?

我正在使用EF 6。

2 个答案:

答案 0 :(得分:2)

您需要将上下文配置为在运行时迁移。你需要在每个运行的进程中只执行一次这样的操作,所以上下文中的静态构造函数是一个相当不错的放置它的地方

static MyContext()
{
    Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, Data.Migrations.Configuration>());
}

还要确保在Azure中配置了连接字符串。

如果您使用自动迁移(在部署的站点中这是一个坏主意),那么您还需要启用这些迁移

答案 1 :(得分:1)

要运行此类迁移脚本,我建议使用Azure WebJobs: http://www.hanselman.com/blog/IntroducingWindowsAzureWebJobs.aspx

Azure WebJobs是一个用于运行.bat,.exe等脚本的调度程序。它基本上像UNIX机器上的cron一样工作,但提供直观且易于使用的UI。所以对于@Romoku案例,他可以创建控制台应用程序。这使用EF 6.0和.Net提供的所有内容来安排他的迁移并跟踪操作日志。它适用于运行网站的同一台机器和环境。