示例#1
0
        private DishImgRawData GetDishDetails()
        {
            // 从 DishDetailsRawData 获取img
            var dishCatDetails             = new DishListRawData(DishDetailsFileStore.GetAll <DishDetailsRawData>());
            IEnumerable <DishImgItem> imgs = dishCatDetails.GetImgs();

            // 取掉重复
            return(new DishImgRawData(imgs.Distinct()));
        }
        public void Execute()
        {
            //食材及其分类
            foreach (var fmRawData in _foodMaterialStore.GetAll <FoodMaterialRawDataItem>())
            {
                _foodMaterialManager.Import(fmRawData);
                Console.WriteLine($"食材:{fmRawData.Top}_{fmRawData.Middle} 成功");
            }

            //菜品及其相关
            //太多了,是否考虑并发!
            var dishCatDetails = new DishListRawData(_dishDetailsFileStore.GetAll <DishDetailsRawData>());
            IEnumerable <DishDetailsRawDataItem> dishs = dishCatDetails.GetDishs();
            ParallelOptions parallelOptions            = new ParallelOptions()
            {
                MaxDegreeOfParallelism = 100,
            };

            var start = DateTime.Now;

            ShowAndLog($"导入菜品 start:{start}");
            Parallel.ForEach(dishs, parallelOptions, dish =>
            {
                try
                {
                    _dishManager.Import(dish);
                    Console.Write($".");
                }
                catch (Exception ex)
                {
                    ShowAndLog($"{dish.ToString()} {ex.Message} {ex.InnerException?.Message}");
                }
            });
            var end = DateTime.Now;

            ShowAndLog($"导入菜品 end:{end} 耗时:{end.Subtract(start).TotalMinutes}");
        }