public void SavePlayer(User user) { var dbUser = GetUserById(user.Id); user.Inventory?.ToList().ForEach(inv => { if (inv.Id == null) { inv.Id = Guid.NewGuid().ToString(); _context.Inventory.Add(inv); } else { var dbInv = _context.Inventory.FirstOrDefault(i => i.Id == inv.Id); if (dbInv == null) { _context.Inventory.Add(inv); } else { _context.Entry(dbInv).CurrentValues.SetValues(inv); } } }); dbUser.Inventory?.ToList().ForEach(inv => { // If the new user's inventory doesnt contain an inventory that was on the db user, remove it if (!user.Inventory.ToList().Exists(i => i.Id == inv.Id)) { _context.Inventory.Remove(inv); } }); _context.Entry(dbUser).CurrentValues.SetValues(user); _context.SaveChanges(); }
public void SaveMob(Mob mob) { var dbMob = GetMobById(mob.Id); if (dbMob != null) { _context.Entry(dbMob).CurrentValues.SetValues(mob); } else { dbMob = mob; _context.Mobs.Add(dbMob); } _context.SaveChanges(); }