/// <summary>
        /// ConcurrentCollections with EntitFramework
        /// </summary>
        public void Run6()
        {
            LinqDemoEntities db      = new LinqDemoEntities();
            var products             = GetProducts();
            ConcurrentBag <Order> cb = new ConcurrentBag <Order>();

            Console.WriteLine("來源資料筆數:{0}", products.Count());
            Console.WriteLine("執行前結果資料筆數:{0}", db.Order.Count());

            Parallel.ForEach(products, x =>
            {
                int id      = x.Id;
                string name = x.Name;
                int stock   = 100 + x.Id;

                var order = new Order()
                {
                    Id        = id,
                    OrderName = name
                };

                cb.Add(order);
            });

            db.Order.AddRange(cb);

            db.SaveChanges();

            Console.WriteLine("執行後結果資料筆數:{0}", db.Order.Count());
        }
        /// <summary>
        /// List with EntitFramework
        /// </summary>
        public void Run5()
        {
            LinqDemoEntities db = new LinqDemoEntities();
            var products        = GetProducts();

            Console.WriteLine("來源資料筆數:{0}", products.Count());
            Console.WriteLine("執行前結果資料筆數:{0}", db.Order.Count());

            var watch = new Stopwatch();

            watch.Start();

            Parallel.ForEach(products, x =>
            {
                int id      = x.Id;
                string name = x.Name;
                int stock   = 100 + x.Id;

                var order = new Order()
                {
                    Id        = id,
                    OrderName = name
                };

                db.Order.Add(order);
            });

            watch.Stop();

            Console.WriteLine("Consume Time: {0} ms", watch.ElapsedMilliseconds);
            db.SaveChanges();

            Console.WriteLine("執行後結果資料筆數:{0}", db.Order.Count());
        }