internal static TEntity GetEntity <TEntity>(DbContext dbContext, Expression <Func <TEntity, bool> > filter, Func <TEntity> func) where TEntity : class { //1.判断是否在二级TableCache,如果没有,则进行二级缓存初始化逻辑 var result = TableCacheManager.GetEntitiesFromCache(dbContext, filter)?.FirstOrDefault(); //2.判断是否在一级QueryCahe中 if (result == null) { result = QueryCacheManager.GetEntitiesFromCache <TEntity>(dbContext); } //3.如果都没有,则直接从逻辑中获取 if (result == null) { result = func(); dbContext.IsFromCache = false; //4.Query缓存存储逻辑(内涵缓存开启校验) QueryCacheManager.CacheData(dbContext, result); } return(result); }
internal static List <TEntity> GetEntities <TEntity>(DbContext dbContext, Expression <Func <TEntity, bool> > filter, Func <List <TEntity> > func) where TEntity : class { //1.判断是否在二级TableCache,如果没有,则进行二级缓存初始化逻辑 var entities = TableCacheManager.GetEntitiesFromCache(dbContext, filter); //2.判断是否在一级QueryCahe中 if (entities == null || !entities.Any()) { entities = QueryCacheManager.GetEntitiesFromCache <List <TEntity> >(dbContext); } //3.如果都没有,则直接从逻辑中获取 if (entities == null || !entities.Any()) { entities = func(); dbContext.IsFromCache = false; //4.Query缓存存储逻辑(内涵缓存开启校验) QueryCacheManager.CacheData(dbContext, entities); } return(entities); }