.NET Core 2.1 - seedowanie bazy danych

.NET Core 2.1 - seedowanie bazy danych
mgrzegor
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 27
0

Cześć!
Potrzebuję wypełnić wszystkie tabele w DB podstawowymi danymi. Czy ktoś może polecić mi sprawdzony patent na dokonanie tego w jakiś "cywilizowany" sposób?

Nie chciałbym tego robić przez HasData, aby nie generować masy kodu w plikach migracyjnych:

Kopiuj
modelBuilder.Entity<SampleEntity>().HasData(
    new SampleEntity { Id= 1, Name= "Sample" });

W .NET 4.8 można było skorzystać z DbMigrationsConfiguration, być może jest jakiś odpowiednik na Core?

Obecnie radzę sobie tak:
W Program.cs tworzę scope, do klasy seed-ującej przekazuję ServiceProvider, z którego wyciągam DbContext i robię odpowiednie inserty na tabelach

Kopiuj
using (var scope = newHost.Services.CreateScope())
{
    var services = scope.ServiceProvider;

    Configuration.Seed(services);
}
jarzi
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 96
0

@mgrzegor: Jakiej bazy używasz? Bo generalnie istnieją wtyczki do MS-SQL (do innych nie wiem) do generowania testowych danych i spokojnie możesz sobie zapylić bazę kilkoma kliknięciami. Tylko pytanie czy chcesz/możesz to w ten sposób zrobić czy chcesz koniecznie z kodu. Ewentualnie masz stronki do generowania takich danych: https://www.generatedata.com/

jarzi
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 96
1

@mgrzegor: Ja bym użył NBuildera i Fakera w takim razie
https://github.com/nbuilder/nbuilder
https://github.com/oriches/faker-cs

jarzi
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 96
0

@mgrzegor: No to może tak: trzymasz sobie rekordy w CSV i odczytujesz sobie w Seed() i po każdym Update-Database jesteś z tym co miałeś w CSV?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.