static void Main(string[] args)
        {
            var context = new VidzyContext();
            var videos = context.Videos.ToList();

            //Console.WriteLine("LAZY LOADING");
            //foreach (var video in videos)
            //{
            //    Console.WriteLine($"VideoName: {video.Name}, Genre is: {video.Genre.Name}");
            //}

            //var videosWithGenres = context.Videos.Include(v => v.Genre).ToList();
            //Console.WriteLine();
            //Console.WriteLine("Eager loading");
            //foreach (var videosWithGenre in videosWithGenres)
            //{
            //    Console.WriteLine($"VideoName: {videosWithGenre.Name}, Genre is: {videosWithGenre.Genre.Name}");
            //}

            context.Genres.Load();
            Console.WriteLine();
            Console.WriteLine("Explicit loading");
            foreach (var video in videos)
            {
                Console.WriteLine($"VideoName: {video.Name}, Genre is: {video.Genre.Name}");
            }
        }
 public static void AddVideo(Video video )
 {
     using (var context = new VidzyContext())
     {
         context.Videos.Add(video);
         context.SaveChanges();
     }
 }
        public static void RemoveVideo(int videoId)
        {
            using (var context = new VidzyContext())
            {
                var video = context.Videos.SingleOrDefault(v => v.Id == videoId);
                if (video == null) return;

                context.Videos.Remove(video);
                context.SaveChanges();
            }
        }
 public static void AddTag(params string [] tagNames)
 {
     using (var context = new VidzyContext())
     {
         var tags = context.Tags.Where(t => tagNames.Contains(t.Name)).ToList();
         foreach (var tagName in tagNames)
         {
             if (!tags.Any(t => t.Name.Equals(tagName, StringComparison.CurrentCultureIgnoreCase)))
                 context.Tags.Add(new Tag {Name = tagName });
         }
         context.SaveChanges();
     }
 }
        public static void RemoveTagFromVideo(int videoId, params string [] tagNames)
        {
            using (var context = new VidzyContext())
            {
                context.Tags.Where(t => tagNames.Contains(t.Name)).Load();

                var video = context.Videos.Single(v => v.Id == videoId);
                foreach (var tagName in tagNames)
                {
                    video.RemoveTag(tagName);
                }
                context.SaveChanges();
            }
        }
        public static void RemoveGenre(int genreId, bool enforceDeletingVideos )
        {
            using (var context = new VidzyContext())
            {
                var genre = context.Genres.Include(g => g.Videos).SingleOrDefault(g => g.Id == genreId);
                if (genre == null) return;

                if (enforceDeletingVideos)
                    context.Videos.RemoveRange(genre.Videos);
                context.Genres.Remove(genre);
                context.SaveChanges();

            }
        }
        public static void AddTagToVideo(int videoId, params string[] tagNames)
        {
            using (var context = new VidzyContext())
            {
                var tags = context.Tags.Where(t => tagNames.Contains(t.Name)).ToList();

                foreach (var tagName in tagNames)
                {
                    if (!tags.Any(t => t.Name.Equals(tagName, StringComparison.CurrentCultureIgnoreCase)))
                    {
                        tags.Add(new Tag {Name = tagName});
                    }
                    var video = context.Videos.Single(v => v.Id == videoId);
                    tags.ForEach(t => video.AddTag(t));
                    context.SaveChanges();
                }
            }
        }
        static void Main(string[] args)
        {
            var context = new VidzyContext();

            var actionMoviesSortedByNameQuerySyntax =
                from m in context.Videos
                where m.GenreId == 2
                orderby m.Name
                select m;

            var actionMoviesSortedByNameExtensionMethod =
                context.Videos
                .Where(m => m.GenreId == 2)
                .OrderBy(m => m.Name);

            //foreach (var a in actionMoviesSortedByNameExtensionMethod)
            //    Console.WriteLine(a.Name);

            var goldMoviesSortedByReleaseDateExtensionMethod =
                context.Videos
                .Where(m => m.Classification == ExerciseData.Models.Classification.Gold)
                .OrderByDescending(m => m.ReleaseDate);

            //foreach (var a in goldMoviesSortedByReleaseDateExtensionMethod)
            //    Console.WriteLine(a.Name);

            var projectedMovieWithGenre =
                context.Videos
                .OrderBy(v => v.Name)
                .Select(m => new { MovieName = m.Name, GenreName = m.Genre.Name });

            //foreach (var a in projectedMovieWithGenre)
            //    Console.WriteLine("{0} - {1}", a.MovieName, a.GenreName);

            var moviesGroupedClassification =
                from m in context.Videos
                group m by m.Classification
                into g
                select g;

            //foreach (var a in moviesGroupedClassification){

            //    Console.WriteLine(a.Key);
            //    foreach (var m in a)
            //        Console.WriteLine("\t" + m.Name);
            //}

            var movieByClass =
                context.Videos
                .Select(c => new
            {
                Section   = c.Classification,
                VideoName = c.Name
            }).GroupBy(c => c.Section);

            //foreach (var item in movieByClass)
            //{
            //    Console.WriteLine("{0}-{1}", item.Key, item.Count());
            //}

            var genreWithVideo =
                context.Videos.Join(context.Genres, v => v.GenreId, g => g.Id, (videos, genres) => new { GenreName = genres.Name, VideoName = videos.Name }).GroupBy(m => m.GenreName);

            foreach (var item in genreWithVideo)
            {
                Console.WriteLine("{0} - {1}", item.Key, item.Count());
            }

            Console.ReadLine();
        }
        static void Main(string[] args)
        {
            var context = new VidzyContext();

            //var list1 = context.Videos.Where(v => v.Genre.Name.Equals("Action")).OrderBy(v => v.Name);

            //foreach (var video in list1)
            //    Console.WriteLine(video.Name);

            //Console.WriteLine("-----------------------------------------------");

            //var list2 = context.Videos
            //    .Where(v => v.Classification == Classification.Gold && v.Genre.Name.Equals("Drama"))
            //    .OrderByDescending(v => v.ReleaseDate);

            //foreach (var video in list2)
            //    Console.WriteLine(video.Name);

            //Console.WriteLine("-----------------------------------------------");

            //var list3 = context.Videos.Select(v => new
            //{
            //    MovieName = v.Name,
            //    Genre = v.Genre.Name
            //});

            //foreach (var video in list3)
            //    Console.WriteLine(video.MovieName);

            //Console.WriteLine("-----------------------------------------------");

            //var list4 = context.Videos.GroupBy(v => v.Classification).Select(v => new
            //{
            //    ClassName = "Classification : " + v.Key,
            //    MovieList = v.OrderBy(a => a.Name).ToList()
            //});

            //foreach (var classfi in list4)
            //{
            //    Console.WriteLine($@"{classfi.ClassName}");
            //    foreach (var video in classfi.MovieList)
            //    {
            //        Console.WriteLine($@"{video.Name}");
            //    }
            //}

            //Console.WriteLine("-----------------------------------------------");

            //var list5 = context.Videos.GroupBy(v => v.Classification).Select(v => new
            //{
            //    KeyName = v.Key,
            //    Count = v.Count()
            //}).OrderBy(a => a.KeyName.ToString());

            //foreach (var video in list5)
            //    Console.WriteLine($@"{video.KeyName}" + "(" + $@"{video.Count}" + @")");

            //Console.WriteLine("-----------------------------------------------");

            //var list6 = context.Genres.GroupJoin(context.Videos, g => g.Id, v => v.GenreId, (genre, videos) => new
            //{
            //    ClassName = genre.Name,
            //    Count = videos.Count(),
            //}).OrderByDescending(a => a.Count);

            //foreach (var video in list6)
            //    Console.WriteLine($@"{video.ClassName}" + "(" + $@"{video.Count}" + @")");

            Console.WriteLine("-----------------------------------------------");

            var videos = context.Videos.ToList();

            Console.WriteLine();
            Console.WriteLine("LAZY LOADING");
            foreach (var v in videos)
            {
                Console.WriteLine("{0} ({1})", v.Name, v.Genre.Name);
            }

            // Eager loading
            var videosWithGenres = context.Videos.Include(v => v.Genre).ToList();

            Console.WriteLine();
            Console.WriteLine("EAGER LOADING");
            foreach (var v in videosWithGenres)
            {
                Console.WriteLine("{0} ({1})", v.Name, v.Genre.Name);
            }

            // Explicit loading

            // NOTE: At this point, genres are already loaded into the context,
            // so the following line is not going to make a difference. If you
            // want to see expicit loading in action, comment out the eager loading
            // part as well as the foreach block in the lazy loading.
            context.Genres.Load();

            Console.WriteLine();
            Console.WriteLine("EXPLICIT LOADING");
            foreach (var v in videos)
            {
                Console.WriteLine("{0} ({1})", v.Name, v.Genre.Name);
            }
        }
    static void Main(string[] args)
    {
        var context = new VidzyContext();

        //Action movies sorted by name
        var moviesNameSortedQuery = context.Videos
                                    .Where(v => v.Genre.Name == "Action")
                                    .OrderBy(v => v.Name)
                                    .Select(v => new { MovieName = v.Name });

        foreach (var m in moviesNameSortedQuery)
        {
            Console.WriteLine(m.MovieName);
        }

        Console.WriteLine("=======分割线=======");

        //Gold drama movies sorted by release date (newest first)
        var goldDramaQuery = context.Videos
                             .Where(v => v.Classification == Classification.Gold && v.Genre.Name == "Drama")
                             .OrderByDescending(v => v.ReleaseDate)
                             .Select(v => new { MovieName = v.Name });

        foreach (var g in goldDramaQuery)
        {
            Console.WriteLine(g.MovieName);
        }


        Console.WriteLine("=======分割线=======");

        //All movies projected into an anonymous type with two properties: MovieName and Genre
        var projectedQuery = context.Videos
                             .Select(v => new { MovieName = v.Name, Genre = v.Genre.Name });

        foreach (var p in projectedQuery)
        {
            Console.WriteLine(p.MovieName);
        }

        Console.WriteLine("=======分割线=======");

        //All movies grouped by their classification
        var groupedClassificationQuery = context.Videos
                                         .GroupBy(v => v.Classification)
                                         .Select(g => new { Classification = g.Key.ToString(), Movies = g.OrderBy(v => v.Name) });

        foreach (var g in groupedClassificationQuery)
        {
            Console.WriteLine(g.Classification);
            foreach (var v in g.Movies)
            {
                Console.WriteLine("\t" + v.Name);
            }
        }

        Console.WriteLine("=======分割线=======");

        //List of classifications sorted alphabetically and count of videos in them
        var classificationsQuery = context.Videos
                                   .GroupBy(v => v.Classification)
                                   .Select(g => new { Classification = g.Key.ToString(), Count = g.Count() })
                                   .OrderBy(g => g.Classification);

        foreach (var g in classificationsQuery)
        {
            Console.WriteLine(g.Classification + " " + g.Count);
        }
        Console.WriteLine("=======分割线=======");

        //List of genres and number of videos they include, sorted by the numberof videos
        var genresNumberQuery = context.Genres
                                .GroupJoin(context.Videos,
                                           g => g.Id,
                                           c => c.GenreId,
                                           (Genre, Videos) => new { GenresName = Genre.Name, Count = Videos.Count() })
                                .OrderByDescending(g => g.Count);

        foreach (var g in genresNumberQuery)
        {
            Console.WriteLine("{0} ({1})", g.GenresName, g.Count);
        }

        Console.ReadLine();
    }
Пример #11
0
        static void Main(string[] args)
        {
            var context = new VidzyContext();

            // Action Movies sorted by name

            var actionVideos = context.Videos
                .Where(v=> v.Genre.Name == "Action")
                .OrderBy(v => v.Name)
                .Select(v => v.Name );

            foreach (var video in actionVideos)
            {
                Console.WriteLine(video);
            }
            Console.WriteLine();

            //Gold Drama Movies sorted by Releasedate
            var goldMovies = context.Videos
                .Where(v => v.Classification == Classification.Gold)
                .Where(v => v.Genre.Name == "Drama")
                .OrderBy(v => v.ReleaseDate)
                .Select(v => v.Name);
            foreach (var video in goldMovies)
            {
                Console.WriteLine(video);
            }
            Console.WriteLine();

            //All Movies Genre and Name in anonymous type
            var allMovies = context.Videos
                .Select(v => new
                {
                    NameIs = v.Name,
                    TheGenre = v.Genre.Name
                });

            foreach (var allMovie in allMovies)
            {
                Console.WriteLine(allMovie);
            }
            Console.WriteLine();

            //All movies grouped by classification
            var groupedMovies = context.Videos
                .GroupBy(v => v.Classification)
                .Select(g => new
                {
                    Classification = g.Key.ToString(),
                    Videos = g.OrderBy(v => v.Classification)
                });

            foreach (var groupedMovie in groupedMovies)
            {
                Console.WriteLine("Classification: {0}",groupedMovie.Classification);
                foreach (var video in groupedMovie.Videos)
                {
                    Console.WriteLine("\t" + video.Name);
                }
            }
            Console.WriteLine();

            // List of classifications sorted alpha and count of videos
            var classifications = context.Videos
                .GroupBy(v => v.Classification)
                .Select(g => new
                {
                    Name = g.Key.ToString(),
                    Count = g.Count()
                })
                .OrderBy(g => g.Name);
            foreach (var classification in classifications)
            {
                Console.WriteLine("{0} ({1})", classification.Name, classification.Count);
            }
            Console.WriteLine();
            // List of genres and number of videos they include, sorted by the number of videos

            var genresAndNumberVideos = context.Genres
                .GroupJoin(context.Videos, g => g.Id, v => v.GenreId, (genre, videos)
                 => new
                {
                    Name = genre.Name,
                    Count = videos.Count()
                })
                .OrderByDescending(g => g.Count);

            foreach (var numberVideo in genresAndNumberVideos)
            {
                Console.WriteLine("{0} ({1})", numberVideo.Name, numberVideo.Count);
            }
        }
Пример #12
0
        public static void Main(string[] args)
        {
            using (var context = new VidzyContext())
            {
                #region Action Videos by Name
                Console.WriteLine(@"#Action Videos");

                var actionVideos = context.Videos
                                   .Where(video => video.Genre.Name == "Action")
                                   .OrderBy(video => video.Name);

                foreach (var row in actionVideos)
                {
                    Console.WriteLine($@" {row.Name}");
                }
                Console.WriteLine();
                #endregion

                #region Gold Drama Videos by Release Date
                Console.WriteLine(@"#Gold Drama Videos");

                var dramaVideos = context.Videos
                                  .Where(video => video.Genre.Name == "Drama" && video.Classification == Classification.Gold)
                                  .OrderBy(video => video.ReleaseDate);

                foreach (var row in dramaVideos)
                {
                    Console.WriteLine($@" {row.Name}");
                }
                Console.WriteLine();
                #endregion

                #region Videos with Genre
                Console.WriteLine(@"#Videos with Genre");

                var videosWithGenre = context.Videos.Join
                                      (
                    context.Genres,
                    video => video.GenreID,
                    genre => genre.ID,
                    (video, genre) => new
                {
                    VideoName  = video.Name,
                    VideoGenre = genre.Name
                }
                                      );

                foreach (var row in videosWithGenre)
                {
                    Console.WriteLine($@" {row.VideoGenre} ({row.VideoGenre})");
                }
                Console.WriteLine();
                #endregion

                #region Videos by Classification
                Console.WriteLine(@"#Videos with Genre");

                var videosByClassification = context.Videos
                                             .GroupBy(video => video.Classification)
                                             .Select(classificationGroup => new
                {
                    Classification = classificationGroup.Key,
                    Videos         = classificationGroup.OrderBy(video => video.Name)
                });

                foreach (var row in videosByClassification)
                {
                    Console.WriteLine($@" {row.Classification} ({row.Videos.Count()})");
                    foreach (var video in row.Videos)
                    {
                        Console.WriteLine($@"  {video.ID}: {video.Name} ({video.Genre.Name})");
                    }
                    Console.WriteLine();
                }
                Console.WriteLine();
                #endregion

                #region Classifications with Video Count
                Console.WriteLine(@"#Classifications with Video Count");

                var classificationsWithVideoCount = context.Videos
                                                    .GroupBy(video => video.Classification)
                                                    .Select(classification => new
                {
                    Classification = classification.Key,
                    Count          = classification.Count()
                })
                                                    .OrderByDescending(classification => classification.Count);

                foreach (var row in classificationsWithVideoCount)
                {
                    Console.WriteLine($@" {row.Classification} ({row.Count})");
                }
                Console.WriteLine();
                #endregion

                #region Genres with Video Count
                Console.WriteLine(@"#Genres with Video Count");

                var genresWithVideoCount = context.Genres
                                           .GroupJoin
                                           (
                    context.Videos,
                    genre => genre.ID,
                    video => video.GenreID,
                    (genre, videos) => new
                {
                    Genre = genre.Name,
                    Count = videos.Count()
                }
                                           )
                                           .OrderByDescending(genre => genre.Count);

                foreach (var row in genresWithVideoCount)
                {
                    Console.WriteLine($@" {row.Genre} ({row.Count})");
                }
                Console.WriteLine();
                #endregion
            }
        }