Зависимость BogusFaker ForeignKey для случайных данных - C#

Когда мы используем платформу ASP.NET MVC, у нас есть знаменитая таблица AspNetUsers, которая содержит уникальный идентификатор для каждого пользователя. Я хочу сгенерировать данные в других таблицах на основе созданных "поддельных" пользователей. Как я могу получить идентификатор (из AspNetUsers), который был фактически сгенерирован для других таблиц, таких как ProfileTable?

for (var i = 0; i < names.Count(); i++)
{
    AspNetUserFaker = new Faker<AspNetUser>().StrictMode(false)
                .RuleFor(a => a.Id, f => Guid.NewGuid().ToString()) // Randomly
                .RuleFor(a => a.FirstName, (f, u) => firstNames[i]) // Preselected known names
                .RuleFor(a => a.LastName, (f, u) => lastNames[i])
                ...
}

тогда

ProfileFaker = new Faker<ProfileTable>().StrictMode(false)
    // Get Id from the previously created, has to come from AspNetUsers, and only inserted once on this table
    .RuleFor(a => a.MemberID, f => f.IndexFaker) // <-- Need help here
    .RuleFor(a => a.About, f => f.Lorem.Words())
    ...

1 ответ

Эту проблему можно решить, сохраняя идентификаторы пользователей в Queueи выскакивает каждый раз - брать ID для каждого пользователя и не более того. Вероятно, вам также следует обрабатывать количество сгенерированных ProfileTableограничив его числом существующих пользователей.

      var ids = new Queue<string>(); //create Queue to store IDs of generated users

for (var i = 0; i < names.Count(); i++)
{
    AspNetUserFaker = new Faker<AspNetUser>()
                .StrictMode(false)
                .RuleFor(a => a.Id, f => Guid.NewGuid().ToString())
                ... 
                .Generate(1); //Assums that the user is generated

    ids.Enqueue(AspNetUserFaker.Id);
}


ProfileFaker = new Faker<ProfileTable>()
    .StrictMode(false)
    .RuleFor(a => a.MemberID, f => ids.Dequeue()) // Sets the value from queue
    ...
    .Generate(ids.Count); //Limit the generation for the amount of users
Другие вопросы по тегам