Datenseeding bei Schemamigrationen in Entity Framework Core
15.10.2018, 00:00 Uhr
Daten säen
Das Füllen von Datenbanken bei Schemamigrationen ist wieder da – leider nur unvollkommen.
Seit Version 4.1 gibt es im klassischen ADO.NET Entity Framework (EF) das Vorgehensmodell Code First mit Schemamigrationen. Dabei lässt sich beim Anlegen einer Tabelle in der Datenbank diese direkt mit Daten füllen. Dies nennt sich Datenseeding. Es wird unterstützt durch die Methode Seed() in der von DbMigrationsConfiguration<Kontextname> abgeleiteten Konfigurationsklasse (siehe Listing 1).
Listing 1: Datenseeding im klassischen ADO.NET Entity Framework [6]
protected override void Seed(
BookService.Models.BookServiceContext context)
{
context.Authors.AddOrUpdate(x => x.Id,
new Author() { Id = 1, Name = "Jane Austen" },
new Author() { Id = 2, Name = "Charles Dickens" },
new Author() { Id = 3,
Name = "Miguel de Cervantes" }
);
context.Books.AddOrUpdate(x => x.Id,
new Book() { Id = 1,
Title = "Pride and Prejudice", Year = 1813,
AuthorId = 1,
Price = 9.99M, Genre = "Comedy of manners" },
new Book() { Id = 2, Title = "Northanger Abbey",
Year = 1817, AuthorId = 1, Price = 12.95M,
Genre = "Gothic parody" },
new Book() { Id = 3, Title = "David Copperfield",
Year = 1850, AuthorId = 2, Price = 15,
Genre = "Bildungsroman" },
new Book() { Id = 4, Title = "Don Quixote",
Year = 1617, AuthorId = 3, Price = 8.95M,
Genre = "Picaresque" }
);
}
BookService.Models.BookServiceContext context)
{
context.Authors.AddOrUpdate(x => x.Id,
new Author() { Id = 1, Name = "Jane Austen" },
new Author() { Id = 2, Name = "Charles Dickens" },
new Author() { Id = 3,
Name = "Miguel de Cervantes" }
);
context.Books.AddOrUpdate(x => x.Id,
new Book() { Id = 1,
Title = "Pride and Prejudice", Year = 1813,
AuthorId = 1,
Price = 9.99M, Genre = "Comedy of manners" },
new Book() { Id = 2, Title = "Northanger Abbey",
Year = 1817, AuthorId = 1, Price = 12.95M,
Genre = "Gothic parody" },
new Book() { Id = 3, Title = "David Copperfield",
Year = 1850, AuthorId = 2, Price = 15,
Genre = "Bildungsroman" },
new Book() { Id = 4, Title = "Don Quixote",
Year = 1617, AuthorId = 3, Price = 8.95M,
Genre = "Picaresque" }
);
}
Jetzt 1 Monat kostenlos testen!
Sie wollen zukünftig auch von den Vorteilen eines plus-Abos profitieren? Werden Sie jetzt dotnetpro-plus-Kunde.
- + Digitales Kundenkonto,
- + Zugriff auf das digitale Heft,
- + Zugang zum digitalen Heftarchiv,
- + Auf Wunsch: Weekly Newsletter,
- + Sämtliche Codebeispiele im digitalen Heftarchiv verfügbar