Example #1
0
        /// <summary>
        /// 取得MenuInfo全表内容——使用菜单地址做为KEY
        /// </summary>
        /// <returns>返回Hashtable</returns>
        public Hashtable GetHashtable()
        {
            //读取记录
            object obj = CacheHelper.GetCache(const_CacheKey_Model);

            //如果记录不存在,则重新加载
            if (obj == null)
            {
                //初始化全局菜单内容缓存
                var ht = new Hashtable();
                //获取菜单表全部内容
                var all = MenuInfo.All();
                //遍历读取
                foreach (var model in all)
                {
                    //创建菜单实体
                    var menuinfo = new MenuInfo();
                    menuinfo.Id       = model.Id;
                    menuinfo.Name     = model.Name;
                    menuinfo.Url      = model.Url;
                    menuinfo.ParentId = model.ParentId;
                    menuinfo.Depth    = model.Depth;

                    try
                    {
                        //将菜单实体存入容器中
                        //使用页面地址做为KEY
                        ht.Add(menuinfo.Url, menuinfo);
                    }
                    catch (Exception)
                    {
                    }
                }

                if (ht.Count > 0)
                {
                    CacheHelper.SetCache(const_CacheKey_Model, ht);
                }

                return(ht);
            }
            else
            {
                return((Hashtable)obj);
            }
        }
        /// <summary>
        /// 从IIS缓存中获取MenuInfo表记录
        /// </summary>
        /// <param name="isCache">是否从缓存中读取</param>
        public IList <DataAccess.Model.MenuInfo> GetList(bool isCache = true)
        {
            try
            {
                //判断是否使用缓存
                if (CommonBll.IsUseCache() && isCache)
                {
                    //检查指定缓存是否过期——缓存当天有效,第二天自动清空
                    if (CommonBll.CheckCacheIsExpired(const_CacheKey_Date))
                    {
                        //删除缓存
                        DelAllCache();
                    }

                    //从缓存中获取DataTable
                    var obj = CacheHelper.GetCache(const_CacheKey);
                    //如果缓存为null,则查询数据库
                    if (obj == null)
                    {
                        var list = GetList(false);

                        //将查询出来的数据存储到缓存中
                        CacheHelper.SetCache(const_CacheKey, list);
                        //存储当前时间
                        CacheHelper.SetCache(const_CacheKey_Date, DateTime.Now);

                        return(list);
                    }
                    //缓存中存在数据,则直接返回
                    else
                    {
                        return((IList <DataAccess.Model.MenuInfo>)obj);
                    }
                }
                else
                {
                    //定义临时实体集
                    IList <DataAccess.Model.MenuInfo> list = null;

                    //获取全表缓存加载条件表达式
                    var exp = GetExpression <MenuInfo>();
                    //如果条件为空,则查询全表所有记录
                    if (exp == null)
                    {
                        //从数据库中获取所有记录
                        var all = MenuInfo.All();
                        list = all == null ? null : Transform(all.ToList());
                    }
                    else
                    {
                        //从数据库中查询出指定条件的记录,并转换为指定实体集
                        var all = MenuInfo.Find(exp);
                        list = all == null ? null : Transform(all);
                    }

                    return(list);
                }
            }
            catch (Exception e)
            {
                //记录日志
                CommonBll.WriteLog("从IIS缓存中获取MenuInfo表记录时出现异常", e);
            }

            return(null);
        }