我正在使用 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上的每个请求(而不是在服务器启动时)删除并重新创建数据库。
所以我的问题是,我需要将这两行放在哪里,以便仅在服务器启动时才重新执行它们?
答案 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();
}