Exemplo n.º 1
0
        /// <summary>
        /// 获取分页数据
        /// </summary>
        /// <param name="func">查询条件</param>
        /// <param name="keySelector">排序字段</param>
        /// <param name="pageIndex">获取页面的页数</param>
        /// <param name="pageSize">页面行数</param>
        /// <param name="totalPage">返回数据行总数</param>
        /// <returns></returns>
        public IList <TEntity> GetModel(Func <TEntity, bool> func, Func <TEntity, object> keySelector, int pageIndex, int pageSize, out int totalPage)
        {
            int startRow = (pageIndex - 1) * pageSize;

            totalPage = table.Count();
            //判断缓存中数据是否为空并且数据库内数据行数是否与缓存中行数一致,如果为空或者不一致  从数据库查询数据 异步插入到缓存中。
            int dbCount = context.Set <TEntity>().Count();

            if (dbCount != totalPage || totalPage == 0)
            {
                totalPage = dbCount;
                List <TEntity> listDB = context.Set <TEntity>().AsQueryable().ToList();
                Task.Run(async() => await AsyncAddEntity(listDB)); //异步向redis插入数据。
                return(context.Set <TEntity>().AsQueryable().Where(func).OrderBy(keySelector).Skip(startRow).Take(pageSize).ToList());
            }
            return(table.GetAll().AsQueryable().Where(func).OrderBy(keySelector).Skip(startRow).Take(pageSize).ToList());
        }