public EfRepository(CatalogContext dbContext) { _dbContext = dbContext; }
public static async Task SeedAsync(CatalogContext catalogContext, ILoggerFactory loggerFactory, int?retry = 0) { int retryForAvailability = retry.Value; try { // TODO: Only run this if using a real database // context.Database.Migrate(); if (!catalogContext.CatalogBrands.Any()) { catalogContext.CatalogBrands.AddRange( GetPreconfiguredCatalogBrands()); await catalogContext.SaveChangesAsync(); } if (!catalogContext.CatalogTypes.Any()) { catalogContext.CatalogTypes.AddRange( GetPreconfiguredCatalogTypes()); await catalogContext.SaveChangesAsync(); } if (!catalogContext.CatalogItems.Any()) { catalogContext.CatalogItems.AddRange( GetPreconfiguredItems()); await catalogContext.SaveChangesAsync(); } if (!catalogContext.Stores.Any()) { catalogContext.Stores.AddRange( GetPreconfiguredStores()); await catalogContext.SaveChangesAsync(); } if (!catalogContext.StoresItems.Any()) { catalogContext.StoresItems.AddRange( GetPreconfiguredStoresItems()); await catalogContext.SaveChangesAsync(); } } catch (Exception ex) { if (retryForAvailability < 10) { retryForAvailability++; var log = loggerFactory.CreateLogger <CatalogContextSeed>(); log.LogError(ex.Message); await SeedAsync(catalogContext, loggerFactory, retryForAvailability); } throw; } }