È possibile che l'API Web ASP di base assicuri che il DB venga migrato alla migrazione più recente utilizzando EF Core? So che questo può essere fatto attraverso la linea di comando, ma voglio farlo in modo programmatico.
Aggiornare
Basandomi sulla risposta di Janshair Khan, ho trovato questa classe di aiuto:
using Microsoft.AspNetCore.Builder;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MyWebApi.Models;
namespace MyWebApi
{
public static class DataSeeder
{
public static void SeedData(this IApplicationBuilder app)
{
var context = app.ApplicationServices.GetService<MyContext>();
if (!context.Database.EnsureCreated())
context.Database.Migrate();
}
}
}
Puoi richiamarlo dal metodo Configure
nel tuo Startup.cs
questo modo:
app.SeedData();
Puoi usare
db.Database.EnsureCreated();
per ottenere il tuo db aggiornato con il tuo modello attuale. Se si desidera abilitare le migrazioni (se si sospettano migrazioni successive), utilizzare
db.Database.Migrate();
e metti le tue successive migrazioni nel tempo.
Una nota dalla documentazione sulla chiamata a db.Database.EnsureCreated()
:
Si noti che questa API non utilizza le migrazioni per creare il database. Inoltre, il database creato non può essere successivamente aggiornato utilizzando le migrazioni. Se si sta prendendo di mira un database relazionale e si utilizzano le migrazioni, è possibile utilizzare il metodo DbContext.Database.Migrate () per assicurarsi che il database sia stato creato e che tutte le migrazioni siano applicate.
Potresti semplicemente voler chiamare db.Database.Migrate()
.
Commento tratto dalla fonte trovato sopra la dichiarazione qui .