//
        protected override IEnumerable <Movie> GetAllCore()
        {
            // Using a DataSet ************************************************************************************************************************************
            var ds = new DataSet();     // data visulizer here after break point is set on the return new Movie[0]******************************************************

            using (var conn = CreateConnection())
            {
                var da  = new SqlDataAdapter();
                var cmd = new SqlCommand("GetAllMovies", conn);
                cmd.CommandType = CommandType.StoredProcedure;

                da.SelectCommand = cmd; // data adatper will automatically OPEN the connection and CLOSEd the connection for you
                da.Fill(ds);            // the fill method generates the DataTable[] for Data visulizer
            };

            // Read data
            // if(!ds.Tables.OfType<DataTable>().Any())        // ofType implents IEnumarable<T>
            //     return Enumerable.Empty<Movie>();

            var table = ds.Tables.OfType <DataTable>().FirstOrDefault();    //fetches the first table or null

            if (table == null)
            {
                return(Enumerable.Empty <Movie>());
            }

            var movies = new List <Movie>();

            foreach (var row in table.Rows.OfType <DataRow>())
            {
                var movie = new SqlMovie()
                {
                    Id          = Convert.ToInt32(row["Id"]),   // convert to a int
                    Name        = row.Field <string>("Title"),  // does the string conversion behind the sences
                    Description = Convert.ToString(row[2]),     // another way to convert to a string
                    ReleaseYear = 1900,
                    RunLength   = row.Field <int>(3),
                    IsOwned     = Convert.ToBoolean(row[4]),
                };
                movies.Add(movie);
            }
            ;

            return(movies);
            //throw new NotImplementedException();
            //return new Movie[0];
        }
        protected override IEnumerable <Movie> GetAllCore()
        {
            var ds = new DataSet();

            using (var conn = CreateConnection())
            {
                var da  = new SqlDataAdapter();
                var cmd = new SqlCommand("GetAllMovies", conn);
                cmd.CommandType = CommandType.StoredProcedure;

                da.SelectCommand = cmd;
                da.Fill(ds);
            };

            //Must have at least one table
            var table = ds.Tables.OfType <DataTable>().FirstOrDefault();

            if (table == null)
            {
                return(Enumerable.Empty <Movie>());
            }

            //Enumerate the rows
            var movies = new List <Movie>();

            foreach (var row in table.Rows.OfType <DataRow>())
            {
                var movie = new SqlMovie()
                {
                    Id          = Convert.ToInt32(row["Id"]),
                    Name        = row.Field <string>("Title"),
                    Description = Convert.ToString(row[2]),
                    ReleaseYear = 1900,
                    RunLength   = row.Field <int>(3),
                    IsOwned     = Convert.ToBoolean(row[4]),
                };
                movies.Add(movie);
            }
            ;

            return(movies);
        }