/// <summary> /// 按类型获取缓存,只能在继承类实现,只能同时有一个类型 /// 不建议直接调用,请调用AllCache或重写调用 /// </summary> /// <param name="query"></param> /// <returns></returns> protected Dictionary <string, T> GetCache(LambdaQuery <T> query) { Type type = typeof(T); int expMinute = query.__ExpireMinute; if (expMinute == 0) { expMinute = 5; } query.__ExpireMinute = expMinute; string dataCacheKey; var list = new Dictionary <string, T>(); var db = DBExtend as AbsDBExtend; var a = TypeCache.GetModelKeyCache(type, db.DatabaseName, out dataCacheKey); if (!a) { var helper = db.dbContext.DBHelper; foreach (var p in query.QueryParames) { helper.AddParam(p.Item1, p.Item2); } var sql = query.GetQuery(); list = MemoryDataCache.CacheService.GetCacheList <T>(sql, query.GetFieldMapping(), expMinute, helper, out dataCacheKey); lock (lockObj) { string key2; a = TypeCache.GetModelKeyCache(type, db.DatabaseName, out key2); if (!a) { TypeCache.SetModelKeyCache(type, db.DatabaseName, dataCacheKey); } } } else { list = MemoryDataCache.CacheService.GetCacheItem <T>(dataCacheKey); } return(list); }