예제 #1
0
 /// <summary>
 /// 获取模块菜单表,从缓存读取
 /// </summary>
 public static List <BaseModuleEntity> GetEntities()
 {
     if (HttpContext.Current.Session == null || HttpContext.Current.Cache[BaseModuleEntity.TableName] == null)
     {
         lock (BaseSystemInfo.UserLock)
         {
             if (HttpContext.Current.Session == null || HttpContext.Current.Cache[BaseModuleEntity.TableName] == null)
             {
                 // 读取目标表中的数据
                 List <BaseModuleEntity> entityList = null;
                 string            tableName        = BaseSystemInfo.SystemCode + "Module";
                 BaseModuleManager manager          = new DotNet.Business.BaseModuleManager(tableName);
                 entityList = manager.GetList <BaseModuleEntity>();
                 // 这个是没写过期时间的方法
                 // HttpContext.Current.Cache[tableName] = entityList;
                 // 设置过期时间为8个小时,第2天若有不正常的自动就可以正常了
                 HttpContext.Current.Cache.Add(BaseModuleEntity.TableName, entityList, null, DateTime.Now.AddMinutes(10), TimeSpan.Zero, CacheItemPriority.Normal, null);
             }
         }
     }
     return(HttpContext.Current.Cache[BaseModuleEntity.TableName] as List <BaseModuleEntity>);
 }
예제 #2
0
        /// <summary>
        /// 从缓存获取获取实体
        /// </summary>
        /// <param name="id">主键</param>
        public static BaseModuleEntity GetObjectByCache(string systemCode, string id)
        {
            if (string.IsNullOrWhiteSpace(systemCode))
            {
                systemCode = "Base";
            }

            BaseModuleEntity result = null;

            System.Web.Caching.Cache cache = HttpRuntime.Cache;
            string cacheObject             = systemCode + "Module";

            if (!string.IsNullOrEmpty(id))
            {
                cacheObject = systemCode + "Module" + id;
            }
            if (cache != null && cache[cacheObject] == null)
            {
                lock (locker)
                {
                    if (cache != null && cache[cacheObject] == null)
                    {
                        BaseModuleManager manager = new DotNet.Business.BaseModuleManager(BaseModuleEntity.TableName);
                        result = manager.GetObject(id);
                        // 若是空的不用缓存,继续读取实体
                        if (result != null)
                        {
                            cache.Add(cacheObject, result, null, DateTime.Now.AddMinutes(10), TimeSpan.Zero, CacheItemPriority.Normal, null);
                            System.Console.WriteLine(System.DateTime.Now.ToString(BaseSystemInfo.DateTimeFormat) + " cache " + systemCode + " Module " + id);
                        }
                    }
                }
            }
            result = cache[cacheObject] as BaseModuleEntity;
            return(result);
        }