public NpgsqlDbContext(DbContextOptions options) : base(options) { Database.EnsureCreated(); if (!Genders.Any()) { var male = new Gender { Name = "Мужской" }; var female = new Gender { Name = "Женский" }; var other = new Gender { Name = "Другой" }; Genders.AddRange(new[] { male, female, other }); SaveChanges(); } }
private void InitialInitialization() { List <CategoryEntity> categories = new List <CategoryEntity>() { new CategoryEntity() { Name = "Категория-1" }, new CategoryEntity() { Name = "Категория-2" }, new CategoryEntity() { Name = "Категория-3" } }; List <RoleEntity> roles = new List <RoleEntity>() { new RoleEntity() { Name = "Operator" }, new RoleEntity() { Name = "Customer" } }; List <GenderEntity> genders = new List <GenderEntity>() { new GenderEntity() { Name = "Male" }, new GenderEntity() { Name = "Female" } }; UserEntity user = new UserEntity() { Email = "*****@*****.**", Password = "******", //TODO hash этого пароля test Role = roles[1], Name = "Test", LastName = "Test", Gender = genders[0] }; Categories.AddRange(categories); Roles.AddRange(roles); Genders.AddRange(genders); Users.Add(user); SaveChanges(); List <SubCategoryEntity> subCategories = new List <SubCategoryEntity>() { new SubCategoryEntity() { Name = "Подкатегория-1-1", CategoryId = categories[0].Id }, new SubCategoryEntity() { Name = "Подкатегория-1-2", CategoryId = categories[0].Id }, new SubCategoryEntity() { Name = "Подкатегория-1-3", CategoryId = categories[0].Id }, new SubCategoryEntity() { Name = "Подкатегория-2-1", CategoryId = categories[1].Id }, new SubCategoryEntity() { Name = "Подкатегория-2-2", CategoryId = categories[1].Id }, new SubCategoryEntity() { Name = "Подкатегория-2-3", CategoryId = categories[1].Id }, new SubCategoryEntity() { Name = "Подкатегория-3-1", CategoryId = categories[2].Id }, new SubCategoryEntity() { Name = "Подкатегория-3-2", CategoryId = categories[2].Id }, new SubCategoryEntity() { Name = "Подкатегория-3-3", CategoryId = categories[2].Id } }; SubCategories.AddRange(subCategories); SaveChanges(); }
/// <summary> /// Erstellt eine Datenbank mit Musterdaten. Ist die Datenbank schon vorhanden, werden keine /// Änderungen daran durchgeführt. /// </summary> /// <param name="deleteDb">Gibt ab, ob eine vorhandene Datenbank gelöscht werden soll.</param> public void CreateDatabase(bool deleteDb = false) { if (deleteDb) { Database.EnsureDeleted(); } if (!Database.EnsureCreated()) { return; } // Damit bei jedem Programmstart die gleichen Daten generiert werden, wird der // Zufallsgenerator mit einem fixen Wert initialisiert. Das ist wichtig, um Fehler // reproduzieren zu können. Randomizer.Seed = new Random(16030829); Randomizer rnd = new Randomizer(); // Die Geschlechter in die DB schreiben. var genders = new List <Gender> { new Gender { GenderNr = 1, Name = "Male" }, new Gender { GenderNr = 2, Name = "Female" }, }; Genders.AddRange(genders); SaveChanges(); // 20 Lehrer erzeugen. int teacherNr = 1000; var teachers = new Faker <Teacher>() .RuleFor(t => t.Firstname, f => f.Name.FirstName()) .RuleFor(t => t.Lastname, f => f.Name.LastName()) .RuleFor(t => t.TeacherNr, (f, t) => $"{t.Lastname.Substring(0, 3).ToUpper()}{teacherNr++}") .RuleFor(t => t.Email, (f, t) => t.TeacherNr.ToLower() + "@spengergasse.at") .Generate(20); Teachers.AddRange(teachers); SaveChanges(); // Die Klassen 1AHIF - 5AHIF erzeugen. var classes = Enumerable.Range(1, 5) .Select(i => new Schoolclass { ClassNr = i.ToString() + "AHIF", Room = $"{rnd.String2(1, "ABC")}{rnd.String2(1, "1234")}.{rnd.String2(1, "01")}{rnd.String2(1, "123456789")}", KV = rnd.ListItem(teachers) }).ToList(); Classes.AddRange(classes); SaveChanges(); // 50 Schüler erzeugen und in eine zufällige Klasse setzen. var pupils = new Faker <Pupil>() .RuleFor(p => p.Gender, f => f.Random.ListItem(genders)) .RuleFor(p => p.Lastname, f => f.Name.LastName()) .RuleFor(p => p.Firstname, (f, p) => f.Name.FirstName((Bogus.DataSets.Name.Gender)(p.Gender.GenderNr - 1))) .RuleFor(p => p.Schoolclass, f => f.Random.ListItem(classes)) // Bei nullable Werten erzeugen wir 20 % NULL werten. In diesem Fall wird das Geburtsdatum // nicht bei jedem Schüler eingetragen. .RuleFor(p => p.DateOfBirth, (f, p) => f.Date.Between( new DateTime(2006 - int.Parse(p.Schoolclass.ClassNr.Substring(0, 1)), 9, 1), new DateTime(2007 - int.Parse(p.Schoolclass.ClassNr.Substring(0, 1)), 9, 1)).Date.OrNull(f, 0.2f)) .Generate(50); Pupils.AddRange(pupils); SaveChanges(); // Generator für Prüfungen erzeugen. var examFaker = new Faker <Exam>() .RuleFor(e => e.Subject, f => f.Random.ListItem(new string[] { "AM", "D", "E", "POS", "DBI" })) .RuleFor(e => e.Date, f => f.Date.Between(new DateTime(2019, 9, 1), new DateTime(2020, 7, 1)).Date) .RuleFor(e => e.Examiner, f => f.Random.ListItem(teachers)) .RuleFor(e => e.Grade, f => f.Random.Int(1, 5).OrNull(f, 0.2f)); // 3 - 5 Prüfungen für jeden Schüler erzeugen und die Liste der Prüfungen des Schülers // setzen. foreach (var p in pupils) { int examCount = rnd.Int(3, 5); // Der Schüler wird erst jetzt zugewiesen, da wir für jeden Schüler Prüfungen // generieren wollen. Exams.AddRange(examFaker.RuleFor(e => e.Pupil, f => p).Generate(examCount)); } SaveChanges(); }