コード例 #1
0
ファイル: Program.cs プロジェクト: oznoztn/MovieDb2016
        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();
        }
コード例 #2
0
        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);
        }