public async Task Update(Guid id, ViewRequestDTO request) { var view = await GetById(id); view.Name = request.Name; view.Description = request.Description; view.RequiresApproval = request.RequiresApproval; view.ShowNames = request.ShowNames; if (request.Categories != null && request.Categories.Count > 0) { view.ViewCategories.RemoveAll(vc => !request.Categories.Contains(vc.CategoryId)); request.Categories .Where(categoryId => !view.ViewCategories.Select(vc => vc.CategoryId).Contains(categoryId)) .ToList() .ForEach(categoryId => view.ViewCategories.Add( new ViewCategory { ViewId = view.Id, CategoryId = categoryId } )); } _repository.Update(view); await _context.SaveChangesAsync(); }