private static void Seed_Empire500XML_MovieInfo_Actors_SeedGenres() { var listXmlContainer = XmlToXMLContainer(); var context = new MovieDbContext(); foreach (var xmlContainer in listXmlContainer) { var movie = context.MovieSet.Single(t => t.ImdbLink == xmlContainer.ImdbId).Id; foreach (var genre in xmlContainer.Genres) { string genreModified = genre.Replace(" ", ""); Genre existingGenre = context.GenreSet.First(t => t.Name == genreModified); var genreMap = new MovieGenreMapping() { MovieId = movie, GenreId = existingGenre.Id }; context.MovieGenreMappingSet.Add(genreMap); } } context.SaveChanges(); }
public MovieCreationData UpdateSec(MovieCreationData movieCreationData) { if (movieCreationData.GenreIds == null) { movieCreationData.GenreIds = new int[] {} } ; if (movieCreationData.SubGenreIds != null && movieCreationData.SubGenreIds.Count() > 0) { movieCreationData.GenreIds = movieCreationData.GenreIds.Union(movieCreationData.SubGenreIds).ToArray(); } using (var entityContext = new MovieDbContext()) { var existingMovie = (from m in entityContext.MovieSet where m.Id == movieCreationData.Id select m).FirstOrDefault(); SimpleMapper.PropertyMap(movieCreationData, existingMovie); entityContext.SaveChanges(); // ADIM 1 // var currentGenreMappings = entityContext.MovieGenreMappingSet.Where(t => t.MovieId == movieCreationData.Id).ToList(); // (True ise) Güncel Movie'de, veritabanındaki haline kıyasla, daha az Genre (Mapping) bulunmakta.. if (currentGenreMappings.Count > movieCreationData.GenreIds.Count()) { for (int i = 0; i < movieCreationData.GenreIds.Count(); i++) { currentGenreMappings[i].GenreId = movieCreationData.GenreIds[i]; } //2 for (int i = movieCreationData.GenreIds.Count(); i < currentGenreMappings.Count; i++) { entityContext.MovieGenreMappingSet.Remove(currentGenreMappings[i]); } entityContext.SaveChanges(); } else { int index = 0; foreach (var currentGenreMap in currentGenreMappings) { currentGenreMap.GenreId = movieCreationData.GenreIds[index]; index++; } if (movieCreationData.GenreIds.Count() != currentGenreMappings.Count) { for (int i = index; i < movieCreationData.GenreIds.Count(); i++) { var newGenreMapping = new MovieGenreMapping() { MovieId = movieCreationData.Id, GenreId = movieCreationData.GenreIds[i] }; entityContext.MovieGenreMappingSet.Add(newGenreMapping); } } entityContext.SaveChanges(); } // ADIM 2 // var currentActorMappings = entityContext.MovieActorMappingSet.Where(t => t.MovieId == movieCreationData.Id).ToList(); // (True ise) Güncel Movie'de, veritabanındaki haline kıyasla, daha az Actor (Mapping) bulunmakta.. if (movieCreationData.ActorIds.Count() < currentActorMappings.Count) { for (int i = 0; i < movieCreationData.ActorIds.Count(); i++) { currentActorMappings[i].ActorId = movieCreationData.ActorIds[i]; } //2 for (int i = movieCreationData.ActorIds.Count(); i < currentActorMappings.Count; i++) { entityContext.MovieActorMappingSet.Remove(currentActorMappings[i]); } entityContext.SaveChanges(); } else { int index = 0; foreach (var currentActorMap in currentActorMappings) { currentActorMap.ActorId = movieCreationData.ActorIds[index]; index++; } if (movieCreationData.ActorIds.Count() != currentActorMappings.Count) { for (int i = index; i < movieCreationData.ActorIds.Count(); i++) { var newActorMapping = new MovieActorMapping() { MovieId = movieCreationData.Id, ActorId = movieCreationData.ActorIds[i] }; entityContext.MovieActorMappingSet.Add(newActorMapping); } } entityContext.SaveChanges(); } } return(movieCreationData); }