public static List <PersonOwn> GetPersonOwnObjects(OnePieceContext context) { var persons = context.Persons.AsNoTracking() .Include(p => p.FruitPossessions).ThenInclude(fp => fp.Fruit) .Include(p => p.WeaponPossessions).ThenInclude(wp => wp.Weapon) .Include(p => p.PirateGroup); List <PersonOwn> personOwns = new List <PersonOwn>(); foreach (var person in persons) { PersonOwn personOwn = new PersonOwn(); personOwn.PersonName = person.Name; personOwn.OwnedFruitNames = person.FruitPossessions.Select(fp => fp.Fruit.Name).ToList(); personOwn.OwnedWeaponNames = person.WeaponPossessions.Select(wp => wp.Weapon.Name).ToList(); personOwn.PirateGroupName = person.PirateGroup?.Name; personOwns.Add(personOwn); } return(personOwns); }
public static void Initialize(OnePieceContext context) { // Write DB object in json file //WriteJson("Fruits.json", context.Fruits.ToList().Cast<object>().ToList()); //WriteJson("Weapons.json", context.Weapons.ToList().Cast<object>().ToList()); //WriteJson("PirateGroups.json", context.PirateGroups.ToList().Cast<object>().ToList()); //WriteJson("Persons.json", context.Persons.ToList().Cast<object>().ToList()); //WriteJson("PersonOwn.json", GetPersonOwnObjects(context).Cast<object>().ToList()); // Initialize DB by reading json file context.Database.EnsureCreated(); // Add Setting if (!context.Settings.Any()) { context.Settings.Add(new Setting { FruitCountPerPage = 10, WeaponCountPerPage = 10, PirateGroupCountPerPage = 10, PersonCountPerPage = 10 }); context.SaveChanges(); } // Fruits if (!context.Fruits.Any()) { var fruits = ReadFruitFromJson("Data/Files/Fruits.json"); foreach (Fruit f in fruits) { context.Fruits.Add(f); } context.SaveChanges(); } // Weapons if (!context.Weapons.Any()) { var weapons = ReadWeaponFromJson("Data/Files/Weapons.json"); foreach (Weapon w in weapons) { context.Weapons.Add(w); } context.SaveChanges(); } // PirateGroups if (!context.PirateGroups.Any()) { var pirateGroups = ReadPirateGroupFromJson("Data/Files/PirateGroups.json"); foreach (PirateGroup group in pirateGroups) { context.PirateGroups.Add(group); } context.SaveChanges(); } // Person if (!context.Persons.Any()) { var persons = ReadPersonFromJson("Data/Files/Persons.json"); foreach (Person p in persons) { context.Persons.Add(p); } context.SaveChanges(); } // Add FruitPossessions, WeaponPossessions, PersonPirateGroup if (!context.FruitPossessions.Any()) { var fruits = context.Fruits.ToList(); var weapons = context.Weapons.ToList(); var pirateGroups = context.PirateGroups.ToList(); var personOwns = ReadPersonOwnFromJson("Data/Files/PersonOwn.json"); foreach (PersonOwn po in personOwns) { var person = context.Persons.SingleOrDefault(p => p.Name == po.PersonName); foreach (var fruitName in po.OwnedFruitNames) { var fruit = fruits.SingleOrDefault(f => f.Name == fruitName); context.FruitPossessions.Add(new FruitPossession { PersonID = person.Id, FruitID = fruit.Id }); } foreach (var weaponName in po.OwnedWeaponNames) { var weapon = weapons.SingleOrDefault(w => w.Name == weaponName); context.WeaponPossessions.Add(new WeaponPossession { PersonID = person.Id, WeaponID = weapon.Id }); } var group = context.PirateGroups.SingleOrDefault(pg => pg.Name == po.PirateGroupName); person.PirateGroupID = group?.Id; } context.SaveChanges(); } }