public static Task SetContextIdsAsync(MvcMovieContext context) { var timer = new Stopwatch(); timer.Start(); foreach (Movies m in context.Movies) { var movieId = (from mov in context.Movies where mov.Title.Equals(m.Title) select mov.Id).FirstOrDefault(); var info = m.Info; info.MovieId = m.Id; } context.SaveChanges(); foreach (Movies m2 in context.Movies) { var info2 = m2.Info; var infoId = (from mov in context.Movies where mov.Id.Equals(info2.MovieId) select mov.Info.Id).FirstOrDefault(); var actors = m2.Info.Actors; var directors = m2.Info.Directors; var genres = m2.Info.Genres; foreach (Actors a in actors) { a.InfoId = infoId; } foreach (Directors d in directors) { d.InfoId = infoId; } foreach (Genres g in genres) { g.InfoId = infoId; } } context.SaveChanges(); timer.Stop(); log.Info(string.Format("SetContextIdsAsync - completed adding Ids to Movies in separate thread and saving to DB: {0} ms have elapsed.", timer.ElapsedMilliseconds.ToString())); // Dispose this context, we don't need it anymore it was only for seeding data context.Dispose(); return(null); }