/// <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>); }
/// <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); }