启动ASP.NET Core API服务器时重新创建数据库

时间:2019-06-27 14:38:30

标签: c# asp.net-core server entity-framework-core asp.net-core-webapi

我正在使用 ASP.NET Core 实体框架Core SQL Server 制作API。

我想在Api服务器启动时删除并重新创建数据库。 我尝试将这些代码行添加到dbContext构造函数中:

public class DatabaseContext : DbContext
{
    public DatabaseContext(DbContextOptions<DatabaseContext> options)
        : base(options)
    {
        Database.EnsureDeleted();
        Database.EnsureCreated();
    }

    public DbSet<Entretien> Entretiens { get; set; }
}

但是随后在API上的每个请求(而不是在服务器启动时)删除并重新创建数据库。

所以我的问题是,我需要将这两行放在哪里,以便仅在服务器启动时才重新执行它们?

1 个答案:

答案 0 :(得分:1)

您可以创建网络托管方法扩展,并在启动应用前调用它

WebHostExtensions.cs

public static class WebHostExtensions{
   public static IWebHost InitDataBase(this IWebHost host){
       using (var scope = host.Services.CreateScope())
       {
           var services = scope.ServiceProvider;
           dbContext = services.GetService<YourDbContext>();
           // your code here
       }
   }
}

Program.cs

public static void Main(string[] args)
{
     CreateWebHostBuilder(args).Build().InitDataBase().Run();
}