TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.75K subscribers
Post #2504 2.43K
День 2072. #ЗаметкиНаПолях
Реалистичные Фейковые Данные с Помощью Bogus. Продолжение
Начало

Генерация данных
1. Случайные ID

bookFaker.RuleFor(b => b.Id, 
f => f.Random.Guid());


2. Случайный текст
Мы можем генерировать случайный текст по шаблону «Lorem Ipsum». Можно генерировать текст разной длины в буквах, словах, предложениях, параграфах и т.п.:
bookFaker.RuleFor(b => b.Title, 
f => f.Lorem.Text());


3. Перечисления
Для перечислений можно использовать свойство Random, чтобы получить несколько случайных значений перечисления (в данном случае – 2, если не задать параметр – случайное количество):
bookFaker.RuleFor(b => b.Genres, 
f => f.Random.EnumValues<Genre>(2));

Если нужно получить одно значение, используйте f.Random.Enum<Genre>().

4. Фиктивные данные людей
Одной из самых захватывающих функций Bogus является возможность генерировать реалистичные данные для обычных сущностей, таких как люди. Можно использовать свойство Person для генерации данных человека: имени, фамилии, пола, логина, телефона, веб-сайта и других:
bookFaker.RuleFor(b => b.Author, 
f => $"{f.Person.FirstName} {f.Person.LastName}");


5. Генерация итогового класса
После определения правил мы можем сгенерировать реальные экземпляры. Нужно вызвать метод Generate, указав количество элементов для генерации:
List<Book> books = bookFaker.Generate(2);

Для генерации случайного количества элементов:
List<Book> books = bookFaker.GenerateBetween(2, 5);

Вот полный пример генерации списка книг:
private List<Book> GenerateBooks(int count)
{
Faker<Book> bookFaker = new Faker<Book>()
.RuleFor(b => b.Id,
f => f.Random.Guid())
.RuleFor(b => b.Title,
f => f.Lorem.Text())
.RuleFor(b => b.Genres,
f => f.Random.EnumValues<Genre>())
.RuleFor(b => b.Author,
f => $"{f.Person.FirstName} {f.Person.LastName}")
.RuleFor(nameof(Book.Pages),
f => f.Random.Number(100, 800))
.RuleForType(typeof(DateOnly),
f => f.Date.PastDateOnly());

return bookFaker.Generate(count);
}

Окончание следует…

Источник:
https://www.code4it.dev/blog/seed-inmemory-entityframework-bogus/
  • 👍 12
More from @netdeveloperdiary
  1. Oct 6, 2026🦈 Открытое собеседование на Middle C# | 6 октября, 19:00 МСК Приглашаем на открытое собес…
  2. Oct 6, 2026День 2806. #ЗаметкиНаПолях Типы Коллекций в .NET, Которые Стоит Попробовать. Начало Больши…
  3. Oct 5, 2026День 2805. #ЧтоНовенького #NET11 Аргументы в Выражениях Коллекций в C#15 В C#15 реализован…
  4. Oct 4, 2026День 2804. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
  5. Oct 3, 2026Post #3360
  6. Oct 3, 2026День 2803. #Оффтоп Чем Заняться, Пока Работают Агенты? У VS Code Есть Ответ Сейчас большую…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →