/// <summary> /// 按类型获取缓存,只能在继承类实现,只能同时有一个类型 /// 不建议直接调用,请调用AllCache或重写调用 /// </summary> /// <param name="query"></param> /// <returns></returns> protected Dictionary <string, TModel> GetCache(LambdaQuery <TModel> query) { Type type = typeof(TModel); int expMinute = query.__ExpireMinute; if (expMinute == 0) { expMinute = 5; } query.__ExpireMinute = expMinute; string dataCacheKey; var list = new Dictionary <string, TModel>(); var a = TypeCache.GetModelKeyCache(type, DBExtend.DatabaseName, out dataCacheKey); if (!a) { var db = DBExtend; var list2 = db.QueryOrFromCache <TModel>(query, out dataCacheKey); list = ObjectConvert.ConvertToDictionary <TModel>(list2); lock (lockObj) { string key2; a = TypeCache.GetModelKeyCache(type, DBExtend.DatabaseName, out key2); if (!a) { TypeCache.SetModelKeyCache(type, DBExtend.DatabaseName, dataCacheKey); } } } else { list = MemoryDataCache.CacheService.GetCacheItem <TModel>(dataCacheKey); } return(list); }
/// <summary> /// 按类型获取缓存,只能在继承类实现,只能同时有一个类型 /// 不建议直接调用,请调用AllCache或重写调用 /// </summary> /// <param name="query"></param> /// <returns></returns> protected Dictionary <int, TModel> GetCache(LambdaQuery <TModel> query) { Type type = typeof(TModel); int expMinute = query.__ExpireMinute; if (expMinute == 0) { expMinute = 5; } query.__ExpireMinute = expMinute; string dataCacheKey; var list = new Dictionary <int, TModel>(); if (!TypeCache.ModelKeyCache.ContainsKey(type)) { var helper = GetDbHelper();//避开事务控制,使用新的连接 var list2 = helper.QueryList <TModel>(query, out dataCacheKey); list = ObjectConvert.ConvertToDictionary <TModel>(list2); lock (lockObj) { if (!TypeCache.ModelKeyCache.ContainsKey(type)) { TypeCache.ModelKeyCache.Add(type, dataCacheKey); } } } else { dataCacheKey = TypeCache.ModelKeyCache[type]; list = MemoryDataCache.CacheService.GetCacheItem <TModel>(dataCacheKey); } return(list); }
/// <summary> /// 按类型获取缓存,只能在继承类实现,只能同时有一个类型 /// 不建议直接调用,请调用AllCache或重写调用 /// </summary> /// <param name="query"></param> /// <returns></returns> protected Dictionary <string, TModel> GetCache(LambdaQuery <TModel> query) { Type type = typeof(TModel); int expMinute = query.__ExpireMinute; if (expMinute == 0) { expMinute = 5; } query.__ExpireMinute = expMinute; string dataCacheKey; var list = new Dictionary <string, TModel>(); if (!TypeCache.ModelKeyCache.ContainsKey(type)) { var db = DBExtend; var list2 = db.QueryOrFromCache <TModel>(query, out dataCacheKey); list = ObjectConvert.ConvertToDictionary <TModel>(list2); lock (lockObj) { if (!TypeCache.ModelKeyCache.ContainsKey(type)) { TypeCache.ModelKeyCache.TryAdd(type, dataCacheKey); } } } else { dataCacheKey = TypeCache.ModelKeyCache[type]; list = MemoryDataCache.CacheService.GetCacheItem <TModel>(dataCacheKey); } return(list); }