public static (List <Pack>, List <PhraseItem>, List <ServerUser>) GeneratePackData( DbContextOptions <FillerDbContext> options) { const int packNumber = 10; const int phrasesPerPack = 10; var users = new Faker <ServerUser>() .Rules((f, u) => { u.Id = Guid.NewGuid().ToString(); u.Email = f.Person.Email; u.UserName = f.Person.UserName; }) .Generate(new Randomizer().Number(4, 5)); var phrases = new Faker <PhraseItem>() .Rules((f, p) => { p.Id = f.UniqueIndex; p.Complexity = f.Random.Number(1, 5); p.CreatedById = f.PickRandom(users).Id; p.CreatedDate = f.Date.Past(); p.Description = f.Lorem.Text(); p.Phrase = f.Lorem.Words(f.Random.Number(1, 4)).Join(" "); p.Track = new Track(); p.Version = 1; p.ReviewStates = GenerateReviewStates(users); }) .Generate(packNumber * phrasesPerPack); var phraseIndex = 0; var packs = new Faker <Pack>() .Rules((f, p) => { p.Id = f.UniqueIndex; p.Name = f.Lorem.Word(); p.Description = f.Lorem.Sentence(); p.Language = "en"; p.Phrases = phrases.GetRange(phraseIndex, phrasesPerPack); phraseIndex += phrasesPerPack; }) .Generate(packNumber); using (var context = new FillerDbContext(options)) { var userRepository = new UserRepository(context); userRepository.InsertRangeAsync(users).GetAwaiter().GetResult(); var repo = new PackRepository(context); repo.InsertRangeAsync(packs).GetAwaiter().GetResult(); } return(packs, phrases, users); }