public static Task SeedData(this WebsitesContext context) { return(Task.Run(() => { if (context.Database.IsSqlServer()) { context.Database.EnsureCreated(); // For MSSQL only } if (context.Websites.Any()) { //To truncate tables and reseed the identities -- only required few times and not always context.Websites.RemoveRange(context.Websites); context.SaveChanges(); if (context.Database.IsSqlServer()) // For MSSQL only { context.Database.ExecuteSqlCommand("DBCC CHECKIDENT('Websites', RESEED, 0)"); context.Database.ExecuteSqlCommand("DBCC CHECKIDENT('WebsiteDetails', RESEED, 0)"); } } if (!context.Websites.Any()) { context.Websites.AddRange(getWebsites().GetAwaiter().GetResult()); context.SaveChanges(); } if (!context.WebsiteDetails.Any()) { context.WebsiteDetails.AddRange(getWebsiteDetails(context).GetAwaiter().GetResult()); context.SaveChanges(); } })); }
public static Task <List <WebsiteDetail> > getWebsiteDetails(WebsitesContext context) => Task.Run(() => context.Websites .ToList <Website>() .Select((website, index) => Enumerable.Range(-15, 30) .Select((number, enuIndex) => new WebsiteDetail { WebsiteId = website.WebsiteId, VisitDate = DateTime.Now.AddDays(number), TotalVisits = (index + 1) * (enuIndex + 1) * 100, Website = website }) .ToList <WebsiteDetail>() ) .SelectMany(websiteDetails => websiteDetails) .ToList <WebsiteDetail>() );