private void UpdateMovieGenres(string[] selectedGenres, Movie movieToUpdate) { if (selectedGenres == null) { movieToUpdate.GenreAssigns = new List <GenreAssign>(); return; } var selectedGenreHS = new HashSet <string>(selectedGenres); var movieGenres = new HashSet <int> (movieToUpdate.GenreAssigns.Select(c => c.Genre.GenreID)); foreach (var genre in _context.Genres) { if (selectedGenreHS.Contains(genre.GenreID.ToString())) { if (!movieGenres.Contains(genre.GenreID)) { movieToUpdate.GenreAssigns.Add(new GenreAssign { MovieID = movieToUpdate.MovieID, GenreID = genre.GenreID }); } } else { if (movieGenres.Contains(genre.GenreID)) { GenreAssign genreToRemove = movieToUpdate.GenreAssigns.FirstOrDefault(i => i.GenreID == genre.GenreID); _context.Remove(genreToRemove); } } } }
public async Task <IActionResult> Create([Bind("MovieName, CreationDate, Active")] Movie movie, string[] selectedGenres) { if (selectedGenres != null) { movie.GenreAssigns = new List <GenreAssign>(); foreach (var genre in selectedGenres) { var genreToAdd = new GenreAssign { MovieID = movie.MovieID, GenreID = int.Parse(genre) }; movie.GenreAssigns.Add(genreToAdd); } } if (ModelState.IsValid) { _context.Add(movie); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } PopulateAssignedGenreData(movie); return(View(movie)); }