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 esiste ora un nuovo metodo di seeding dei dati. Nella tua DbContext
classe di override OnModelCreating
:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>().HasData(new Blog { BlogId = 1, Url = "http://sample.com" });
}
E per le entità correlate, utilizzare le classi anonime e specificare 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"});
Importante: tenere presente che è necessario eseguire una migrazione aggiuntiva dopo aver inserito questi dati nel metodo OnModelCreating e nel database di aggiornamento per aggiornare i dati.
I documenti ufficiali sono stati aggiornati .