I have a list of 9 items and I would like to generate exact 9 records in Standard table with the values in the list for StandardName column and use Bogus to generate the random value for the Description column. Is there a quick and easy way to do it with Bogus C#?

var standardNames = new List<string>()
{
    "English Language Arts Standards",
    "Mathematics Standards",    
    "Fine Arts Standards",
    "Language Arts Standards",
    "Mathematics Standards",
    "Physical Education and Health Standards",
    "Science Standards",
    "Social Sciences Standards",
    "Technology Standards"            
};          

using System.Collections.Generic;

namespace EFCore_CodeFirst.Model.School
{
    public class Standard
    {
        public Standard()
        {
            this.Students = new HashSet<Student>();
            this.Teachers = new HashSet<Teacher>();
        }

        public int StandardId { get; set; }
        public string StandardName { get; set; }
        public string Description { get; set; }

        public virtual ICollection<Student> Students { get; set; }
        public virtual ICollection<Teacher> Teachers { get; set; }
    }
}

1

There are 1 best solutions below

0
On BEST ANSWER

You can use this Helper class:

class Helper
{
    static List<string> standardNames = new List<string>()
    {
        "English Language Arts Standards",
        "Mathematics Standards",
        "Fine Arts Standards",
        "Language Arts Standards",
        "Mathematics Standards",
        "Physical Education and Health Standards",
        "Science Standards",
        "Social Sciences Standards",
        "Technology Standards"
    };

    static int nameIndex = 0;

    public static List<Standard> GetSampleTableData()
    {
        var index = 1;

        var faker = new Faker<Standard>()
            .RuleFor(o => o.StandardId, f => index++)
            .RuleFor(o => o.StandardName, a => GetNextName())
            .RuleFor(o => o.Description, f => f.Random.String(25));

        return faker.Generate(standardNames.Count);
    }

    private static string GetNextName()
    {
        if (nameIndex >= standardNames.Count)
            nameIndex = 0;
        return standardNames[nameIndex++];
    }
}