Web API 2 - 如何重新创建应用程序启动环境

Web API 2 - how to recreate the environment an app start

我正在使用 elastic beanstalk publish 将我的网络 api 项目推送到 AWS。我想将其用于演示环境。

目前,我已将其设置为在两个单独的部署中执行此操作:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{

    public ApplicationDbContext()
    : base(Helpers.GetRDSConnectionString(), throwIfV1Schema: false)
    {
        // THIS DEPLOY IS USED TO DELETE THE CURRENT DATABASE
        //SqlConnection.ClearAllPools();
        //Database.SetInitializer<ApplicationDbContext>(new 
        DropCreateDatabaseAlways<ApplicationDbContext>());

        // THIS DEPLOY IS USED TO SEED THE DATABASE
        System.Data.Entity.Database.SetInitializer(new 
        MigrateDatabaseToLatestVersion<ApplicationDbContext, Configuration>());
     }

但是,每当应用程序池再次唤醒时,数据库都会尝试自行播种。这是 app.start 中的某个地方吗,我可以将此逻辑放在其中,以便它仅在应用程序最初部署时才尝试重新创建数据库。

是的,您可以使用 Application_Start,它在应用程序的生命周期中只被调用一次。

例子

protected void Application_Start()
{
    Database.SetInitializer<SomeContext>(new DropCreateDatabaseIfModelChanges());
}

DropCreateDatabaseIfModelChanges