using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace SqlSugar { internal class CacheSchemeMain { public static T GetOrCreate(ICacheService cacheService, QueryBuilder queryBuilder, Func getData, int cacheDurationInSeconds, SqlSugarProvider context,string cacheKey) { CacheKey key = CacheKeyBuider.GetKey(context, queryBuilder); key.AppendKey = cacheKey; string keyString = key.ToString(); var result = cacheService.GetOrCreate(keyString, getData, cacheDurationInSeconds); return result; } public static void RemoveCache(ICacheService cacheService, string tableName) { if (cacheService == null) { return; } if (StaticConfig.CacheRemoveByLikeStringFunc != null) { StaticConfig.CacheRemoveByLikeStringFunc(cacheService, UtilConstants.Dot + tableName.ToLower() + UtilConstants.Dot); return; } var keys = cacheService.GetAllKey(); if (keys.HasValue()) { foreach (var item in keys) { if (item.ToLower().Contains(UtilConstants.Dot + tableName.ToLower() + UtilConstants.Dot)) { cacheService.Remove(item); } } } } public static void RemoveCacheByLike(ICacheService cacheService, string likeString) { if (cacheService == null) { return; } if (StaticConfig.CacheRemoveByLikeStringFunc != null) { StaticConfig.CacheRemoveByLikeStringFunc(cacheService, likeString); return; } var keys = cacheService.GetAllKey(); if (keys.HasValue()) { foreach (var item in keys) { if (item.ToLower().Contains(likeString.ToLower())) { cacheService.Remove(item); } } } } } }