Воссоздать базу данных при запуске сервера ASP.NET Core API - PullRequest
0 голосов
/ 27 июня 2019

Я делаю API с ASP.NET Core , Entity Framework Core и SQL Server .

Я хочу отбросить ивоссоздать базу данных при запуске сервера 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 Ответ

1 голос
/ 27 июня 2019

Вы можете создать расширение метода веб-хостинга и вызвать его перед запуском приложения.

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();
}
...