public IActionResult Edit(int? id, EditCategoryViewModel viewModel) { if (id == null) return new NotFoundResult(); var ordinals = new Dictionary<int, int>(); var isBig = new Dictionary<int, bool>(); int index = 0; foreach (var pictureId in viewModel.GetPictureIds()) { isBig[pictureId] = viewModel.GetPictureIsBigs()[index]; ordinals[pictureId] = index++; } foreach (var picture in _context.Categories .Include(c => c.Pictures) .Single(c => c.Id == id) .Pictures) picture.CategoryId = null; foreach (var picture in _context.Pictures .Where(p => viewModel.GetPictureIds().Contains(p.Id))) { picture.CategoryId = id; picture.Ordinal = ordinals[picture.Id]; picture.IsFriendly = isBig[picture.Id]; } var category = _context.Categories.Single(c => c.Id == id); category.Name = viewModel.Name; category.Caption = viewModel.Caption; category.ThumbnailId = viewModel.ThumbnailId; category.ParentCategoryId = viewModel.SelectedParentCategory; _context.SaveChanges(); return RedirectToAction("Edit"); }