/// <summary> /// 获取角色表,从缓存读取 /// </summary> public static List <BaseRoleEntity> GetObjectList() { System.Web.Caching.Cache cache = HttpRuntime.Cache; string tableName = BaseSystemInfo.SystemCode + "Role"; if (cache != null && cache[tableName] == null) { lock (BaseSystemInfo.UserLock) { if (cache != null && cache[tableName] == null) { // 读取目标表中的数据 List <BaseRoleEntity> entityList = null; BaseRoleManager manager = new DotNet.Business.BaseRoleManager(tableName); entityList = manager.GetList <BaseRoleEntity>(); // 这个是没写过期时间的方法 // HttpContext.Current.Cache[tableName] = entityList; // 设置过期时间为8个小时,第2天若有不正常的自动就可以正常了 // HttpContext.Current.Cache.Add(BaseRoleEntity.TableName, entityList, null, DateTime.Now.AddHours(8), TimeSpan.Zero, CacheItemPriority.Normal, null); cache.Add(tableName, entityList, null, DateTime.Now.AddMinutes(10), TimeSpan.Zero, CacheItemPriority.Normal, null); } } } // return HttpContext.Current.Cache[BaseRoleEntity.TableName] as List<BaseRoleEntity>; return(cache[tableName] as List <BaseRoleEntity>); }
/// <summary> /// 从缓存获取获取实体 /// </summary> /// <param name="id">主键</param> public static BaseRoleEntity GetObjectByCache(string systemCode, string id) { if (string.IsNullOrWhiteSpace(systemCode)) { systemCode = "Base"; } BaseRoleEntity result = null; System.Web.Caching.Cache cache = HttpRuntime.Cache; string cacheObject = systemCode + "Role"; if (!string.IsNullOrEmpty(id)) { cacheObject = systemCode + "Role" + id; } if (cache != null && cache[cacheObject] == null) { lock (locker) { if (cache != null && cache[cacheObject] == null) { BaseRoleManager manager = new DotNet.Business.BaseRoleManager(BaseRoleEntity.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 + " Role " + id); } } } } result = cache[cacheObject] as BaseRoleEntity; return(result); }