public static async Task SeedAsync(DemoContext demoContext, ILoggerFactory loggerFactory, int?retry = 0) { int retryForAvailability = retry.Value; try { if (!demoContext.Categories.Any()) { demoContext.Categories.AddRange(GetPreconfiguredCategories()); await demoContext.SaveChangesAsync(); } if (!demoContext.Products.Any()) { demoContext.Products.AddRange(GetPreconfiguredProducts()); await demoContext.SaveChangesAsync(); } } catch (Exception exception) { if (retryForAvailability < 10) { retryForAvailability++; var log = loggerFactory.CreateLogger <DemoContextSeed>(); log.LogError(exception.Message); await SeedAsync(demoContext, loggerFactory, retryForAvailability); } throw; } }