SeedKit
Генератор тестовых данных на русском языке для .NET 8. Автоматически заполняет свойства объектов случайными реалистичными данными по имени и типу свойства. Идеально подходит для наполнения баз данных при разработке и тестировании.
Установка
dotnet add package SeedKit
API
Класс Seeder
| Метод |
Описание |
List<T> Generate<T>(int count) |
Генерирует список объектов, заполняя свойства случайными данными по типу и названию. Свойство Id заполняется автоинкрементом. |
List<T> Generate<T>(int count, Action<T, int> configure) |
Генерация с ручной донастройкой каждого объекта через callback. |
List<TChild> GenerateLinked<TChild, TParent>(int childCount, List<TParent> parents, string foreignKeyProperty, string parentIdProperty = "Id") |
Генерация дочерних объектов с привязкой к случайным родителям через FK. |
List<TJoin> GenerateManyToMany<TJoin, TLeft, TRight>(int count, List<TLeft> leftItems, List<TRight> rightItems, string leftFkProperty, string rightFkProperty, string leftIdProperty = "Id", string rightIdProperty = "Id") |
Генерация записей связующей таблицы (многие-ко-многим) с уникальными парами. |
Класс Fake -- генераторы случайных данных
Общие
| Метод |
Описание |
string FullName() |
Случайное ФИО (мужское или женское) |
string FullNameMale() |
Мужское ФИО |
string FullNameFemale() |
Женское ФИО |
string FirstName() |
Случайное имя |
string LastName() |
Случайная фамилия |
string Phone() |
Телефон (+7-9XX-XXX-XXXX) |
string MobilePhone() |
Мобильный телефон в формате +7 (9XX) XXX-XX-XX |
string Email() |
Случайный email |
string Address() |
Полный адрес (ул., д., кв., г.) |
string ShortAddress() |
Короткий адрес (ул., д.) |
string City() |
Случайный город |
string Company() |
Название компании |
string Position() |
Должность |
string Education() |
Образование |
string MaritalStatus() |
Семейное положение |
decimal Salary(min, max) |
Зарплата (по умолч. 20000-150000) |
int Experience(min, max) |
Стаж (лет) |
int Age(min, max) |
Возраст |
int Int(min, max) |
Случайное число |
DateTime PastDate(maxDaysAgo) |
Дата в прошлом |
DateTime FutureDate(maxDaysAhead) |
Дата в будущем |
bool Bool() |
Случайный true/false |
T Pick<T>(T[] items) |
Случайный элемент из массива |
T Pick<T>(List<T> items) |
Случайный элемент из списка |
string Pick(params string[] items) |
Случайный элемент из строк |
string Status() |
Случайный статус |
string PaymentType() |
Тип оплаты |
string Department() |
Отдел |
string Description() |
Описание (1-2 предложения) |
string INN() |
ИНН (12 цифр) |
string SNILS() |
СНИЛС |
string Passport() |
Паспорт |
string PassportData() |
Данные паспорта |
string ForeignPassport() |
Загранпаспорт |
string DriverLicense() |
Водительское удостоверение |
string ContractNumber() |
Номер договора |
string OrderNumber() |
Номер заказа |
string ProductCategory() |
Категория товара |
Медицина
| Метод |
Описание |
string Diagnosis() |
Случайный диагноз |
string DoctorSpecialty() |
Специализация врача |
string HospitalDepartment() |
Отделение больницы |
string RoomNumber() |
Номер палаты |
string DentalService() |
Стоматологическая услуга |
decimal DentalPrice() |
Цена стоматологической услуги |
Гостиница
| Метод |
Описание |
string RoomType() |
Тип номера |
string HotelName() |
Название гостиницы |
Библиотека
| Метод |
Описание |
string BookTitle() |
Название книги |
string BookAuthor() |
Автор книги |
string BookGenre() |
Жанр книги |
string ISBN() |
ISBN |
string LibraryCode() |
Библиотечный шифр |
string ReaderCardNumber() |
Номер читательского билета |
Банк
| Метод |
Описание |
string AccountNumber() |
Номер счета |
string CardNumber() |
Номер карты |
string BankName() |
Название банка |
string CreditType() |
Тип кредита |
decimal InterestRate(min, max) |
Процентная ставка |
string ApplicationStatus() |
Статус заявки |
Образование
| Метод |
Описание |
string Subject() |
Дисциплина |
string StudentGroup() |
Учебная группа |
int Grade() |
Оценка (2-5) |
string StudyForm() |
Форма обучения |
Недвижимость
| Метод |
Описание |
string PropertyType() |
Тип недвижимости |
decimal Area(min, max) |
Площадь (кв.м) |
int Rooms() |
Количество комнат |
int Floor() |
Этаж |
decimal PropertyPrice() |
Стоимость недвижимости |
Автопрокат
| Метод |
Описание |
string CarBrand() |
Марка авто |
string CarModel() |
Модель авто |
string LicensePlate() |
Гос. номер |
string CarCategory() |
Категория авто |
string FuelType() |
Тип топлива |
string Transmission() |
Коробка передач |
string CarColor() |
Цвет авто |
decimal RentalPricePerDay() |
Цена проката в сутки |
Спортклуб
| Метод |
Описание |
string GymName() |
Название спортклуба |
string MembershipType() |
Тип абонемента |
string SportActivity() |
Вид спорта/занятия |
string TrainerName() |
Имя тренера |
IT
| Метод |
Описание |
string ProgrammingLanguage() |
Язык программирования |
string Framework() |
Фреймворк |
string DatabaseEngine() |
Движок БД |
string ITPosition() |
IT-должность (Junior, Middle, Senior...) |
string CyberClubName() |
Название компьютерного клуба |
string PcZoneType() |
Тип зоны в компьютерном клубе |
string PcConfig() |
Конфигурация ПК |
decimal PcHourPrice() |
Цена за час в компьютерном клубе |
Спорт
| Метод |
Описание |
string Sport() |
Вид спорта |
string SportsTeam() |
Спортивная команда |
string SportsRank() |
Спортивный разряд |
Кулинария
| Метод |
Описание |
string Dish() |
Блюдо |
string Ingredient() |
Ингредиент |
string CuisineType() |
Тип кухни |
Транспорт
| Метод |
Описание |
string TransportType() |
Тип транспорта |
string Route() |
Маршрут (Город -- Город) |
string FlightNumber() |
Номер рейса |
string TrainNumber() |
Номер поезда |
string WagonType() |
Тип вагона |
string SeatType() |
Тип места |
string CargoType() |
Тип груза |
string TruckType() |
Тип грузового транспорта |
decimal CargoWeight() |
Вес груза (кг) |
int Distance() |
Расстояние (км) |
Туризм
| Метод |
Описание |
string Country() |
Страна |
string TourType() |
Тип тура |
string TourName() |
Название тура |
int HotelStars() |
Звездность отеля (2-5) |
string MealPlan() |
Тип питания |
Авиация
| Метод |
Описание |
string Airport() |
Аэропорт (название и код) |
string AircraftType() |
Тип самолета |
Склад
| Метод |
Описание |
string ProductName() |
Название товара |
string Unit() |
Единица измерения |
string WarehouseAddress() |
Адрес склада |
string DeliveryStatus() |
Статус доставки |
string TrackingNumber() |
Трек-номер |
string WarehouseProduct() |
Наименование товара (продуктовый склад) |
string UnitOfMeasure() |
Единица измерения (расширенная) |
string StorageLocation() |
Место хранения (стеллаж, полка) |
Зарплата
| Метод |
Описание |
string DepartmentName() |
Название отдела |
decimal HourlyRate() |
Тариф (руб/час) |
int BonusPercent() |
Процент премии |
int WorkedHours() |
Отработанные часы за день |
Прочие доменные генераторы
| Метод |
Описание |
string MobileOperator() |
Оператор связи |
int DataGB() |
Объем трафика (ГБ) |
int TariffMinutes() |
Минуты в тарифе |
string TariffName() |
Название тарифа |
string ServiceName() |
Название услуги |
string RentalItem() |
Инвентарь для проката |
string ItemCondition() |
Состояние инвентаря |
string CleaningItem() |
Тип вещи для химчистки |
string CleaningType() |
Тип чистки |
decimal CleaningPrice() |
Цена химчистки |
string AntiqueItem() |
Антикварный предмет |
string AntiquePeriod() |
Эпоха/период |
string AntiqueMaterial() |
Материал антикварного предмета |
string PawnItem() |
Предмет залога (ломбард) |
decimal PawnValue() |
Оценочная стоимость |
string PawnStatus() |
Статус залога |
string HairService() |
Услуга парикмахерской |
string SalonName() |
Название салона красоты |
decimal SalonPrice() |
Цена услуги салона |
string TicketType() |
Тип билета |
string TicketNumber() |
Номер билета |
decimal TicketPrice() |
Цена билета |
string ShowTitle() |
Название спектакля/фильма |
string ShowGenre() |
Жанр спектакля/фильма |
string HallName() |
Название зала |
string SeatNumber() |
Ряд и место |
string JewelryItem() |
Ювелирное изделие |
string MetalPurity() |
Проба металла |
string Gemstone() |
Драгоценный камень |
decimal JewelryPrice() |
Цена ювелирного изделия |
decimal JewelryWeight() |
Вес изделия (грамм) |
string ShopName() |
Название магазина |
int DiscountPercent() |
Скидка (%) |
string SKU() |
Артикул товара |
string Barcode() |
Штрих-код |
Примеры
Пример 1: Генерация сотрудников для HR-системы
using SeedKit;
public class Employee
{
public int Id { get; set; }
public string FullName { get; set; } = "";
public string Position { get; set; } = "";
public decimal Salary { get; set; }
public string Phone { get; set; } = "";
public string Email { get; set; } = "";
public int Experience { get; set; }
}
var employees = Seeder.Generate<Employee>(50);
// Свойства автоматически заполнены: FullName -> ФИО, Position -> должность,
// Salary -> зарплата, Phone -> телефон, Email -> email, Experience -> стаж
db.Employees.AddRange(employees);
db.SaveChanges();
Пример 2: Связанные данные -- вакансии предприятий
var companies = Seeder.Generate<Company>(10);
db.Companies.AddRange(companies);
db.SaveChanges();
var vacancies = Seeder.GenerateLinked<Vacancy, Company>(50, companies, "CompanyId");
db.Vacancies.AddRange(vacancies);
db.SaveChanges();
Пример 3: Многие-ко-многим (студенты и дисциплины)
var students = Seeder.Generate<Student>(30);
var subjects = Seeder.Generate<Subject>(10);
db.Students.AddRange(students);
db.Subjects.AddRange(subjects);
db.SaveChanges();
var enrollments = Seeder.GenerateManyToMany<StudentSubject, Student, Subject>(
60, students, subjects, "StudentId", "SubjectId");
db.StudentSubjects.AddRange(enrollments);
db.SaveChanges();