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());
}
我正在使用 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());
}