Exemple #1
0
        /// <summary>
        /// 获取快讯
        /// </summary>
        /// <param name="pgInfo"></param>
        /// <param name="pageNo"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public List <Fx678Kx> GetFx678KxList(ref PageInfo pgInfo, int pageNo = 1, int pageSize = 30)
        {
            List <Fx678Kx> resultList = new List <Fx678Kx>();


            using (MyFx678KxContext context = new MyFx678KxContext())
            {
                var query =
                    from data in context.Fx678Kxs
                    where
                    !data.Title.Contains("images")
                    select data;


                // 初始化翻页.
                pgInfo = new PageInfo(
                    pageSize: pageSize,
                    pageNo: pageNo,
                    rowCount: query.Count());


                query = query.OrderByDescending(p => p.PubDate)
                        .Skip(pgInfo.SkipValue)
                        .Take(pgInfo.PageSize);


                resultList = query.ToList();
            }

            return(resultList);
        }
        static void Main(string[] args)
        {
            // 当 Code First 与数据库结构不一致时
            // 自动升级到最新的版本.
            Database.SetInitializer(new MigrateDatabaseToLatestVersion <MyFx678KxContext, MyFx678Kx.Migrations.Configuration>());

            using (MyFx678KxContext context = new MyFx678KxContext())
            {
                var query =
                    from data in context.Fx678Kxs
                    select data;

                foreach (var item in query.Take(3))
                {
                    Console.WriteLine(item.Title);
                }
            }

            Console.WriteLine("Finish!");
            Console.ReadKey();
        }
Exemple #3
0
        /// <summary>
        /// 更新快讯.
        /// </summary>
        /// <returns></returns>
        public bool UpdateFx678Kx()
        {
            if (logger.IsInfoEnabled)
            {
                logger.Info("开始更新快讯信息!");
            }


            // 插入的行数.
            int insertCount = 0;

            // 忽略的行数.
            int passCount = 0;


            try
            {
                // 读取快讯列表.
                List <Fx678Kx> kxList = this.fx678KxReader.ReadFx678KxList();


                if (kxList == null || kxList.Count == 0)
                {
                    ResultMessage = "快讯读取,可能发生了问题, 读取到的行数为零!!!";
                    logger.Warn(ResultMessage);
                    return(false);
                }

                using (MyFx678KxContext context = new MyFx678KxContext())
                {
                    Random randomer = new Random();


                    foreach (var kxData in kxList)
                    {
                        // 判断是否已存在.
                        Fx678Kx dbData = context.Fx678Kxs.Find(kxData.NewsId);


                        if (dbData != null)
                        {
                            // 已存在的,不做任何处理.
                            passCount++;
                            continue;
                        }


                        if (kxData.HasMore && !String.IsNullOrEmpty(kxData.MoreUrl))
                        {
                            // 额外读取明细数据.
                            kxData.Content = this.fx678KxReader.ReadMore(kxData.MoreUrl);

                            // 为了避免太频繁访问目标网站.
                            // 随机休眠指定秒数后,再进行处理。
                            Thread.Sleep(randomer.Next(5000));
                        }



                        // 数据有效.
                        kxData.IsActive = true;
                        // 插入前处理.
                        kxData.BeforeInsertOperation();

                        // 逻辑插入.
                        context.Fx678Kxs.Add(kxData);


                        insertCount++;


                        if (logger.IsDebugEnabled)
                        {
                            logger.DebugFormat("kxData: {0}", kxData);
                        }


                        // 物理保存.
                        context.SaveChanges();
                    }
                }



                return(true);
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException dbErr)
            {
                foreach (var errItem in dbErr.EntityValidationErrors)
                {
                    foreach (var err in errItem.ValidationErrors)
                    {
                        logger.InfoFormat("{0} : {1}", err.PropertyName, err.ErrorMessage);
                    }
                }

                logger.Error(dbErr.Message, dbErr);

                ResultMessage = dbErr.Message;

                return(false);
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message, ex);

                ResultMessage = ex.Message;

                return(false);
            }
            finally
            {
                if (logger.IsInfoEnabled)
                {
                    logger.InfoFormat("更新快讯信息完毕!  新插入行数:{0},  已存在的数据行数:{1} ", insertCount, passCount);
                }
            }
        }