Ho una classe di migrazione:
public partial class TestMigration : Migration
{
protected override void Up(MigrationBuilder db)
{
Alla fine del metodo Up, vorrei aggiungere alcuni dati (seed). MigrationBuilder espone alcuni metodi, anche Sql (), ma mi piacerebbe usare EF.
Posso iniettare DbContext qui e fare qualcosa?
A partire da Entity Framework Core 2.1 ora è disponibile un nuovo metodo di seeding dei dati. Nella tua classe DbContext
la DbContext
OnModelCreating
:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>().HasData(new Blog { BlogId = 1, Url = "http://sample.com" });
}
E per le entità correlate, utilizza le classi anonime e specifica la chiave esterna dell'entità correlata:
modelBuilder.Entity<Post>().HasData(
new {BlogId = 1, PostId = 1, Title = "First post", Content = "Test 1"},
new {BlogId = 1, PostId = 2, Title = "Second post", Content = "Test 2"});
Si noti che è necessario eseguire un add-migration dopo aver inserito questi dati nel metodo OnModelCreating e nel database di aggiornamento per aggiornare i dati.
I documenti ufficiali sono stati aggiornati .