/// <summary> /// SqlScalar缓存(缓存的类型为:scalar) /// </summary> /// <param name="db"></param> /// <param name="tableName">表名</param> /// <param name="sql"></param> /// <param name="sqlParams">sql的参数</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static object ScalarCacheUseDict(this DbContext db, string tableName, string sql, IDictionary <string, object> sqlParams, IQueryCacheExpiryPolicy expiryPolicy) { return(EFHelper.Services.Cache.CacheUseDict(tableName, _cacheType, sql, sqlParams, () => db.ScalarUseDict(sql, sqlParams), expiryPolicy)); }
/// <summary> /// SqlScalar缓存(缓存的类型为:scalar) /// </summary> /// <param name="db"></param> /// <param name="tableName">表名</param> /// <param name="sql"></param> /// <param name="sqlParams">sql的参数</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static object ScalarCache(this DbContext db, string tableName, string sql, IDataParameter[] sqlParams, IQueryCacheExpiryPolicy expiryPolicy) { return(EFHelper.Services.Cache.Cache(tableName, _cacheType, sql, sqlParams, () => db.Scalar(sql, sqlParams), expiryPolicy)); }
/// <summary> /// SqlScalar缓存(缓存的类型为:scalar) /// </summary> /// <param name="db"></param> /// <param name="tableName">表名</param> /// <param name="sql"></param> /// <param name="sqlParamModel">sql的参数模型对象</param> /// <param name="ignoreProptsForParamModel">sql的参数模型对象中需要忽略的属性名</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static object ScalarCacheUseModel(this DbContext db, string tableName, string sql, object sqlParamModel, IEnumerable <string> ignoreProptsForParamModel, IQueryCacheExpiryPolicy expiryPolicy) { return(EFHelper.Services.Cache.CacheUseModel(tableName, _cacheType, sql, sqlParamModel, ignoreProptsForParamModel, () => db.ScalarUseModel(sql, sqlParamModel, ignoreProptsForParamModel), expiryPolicy)); }
/// <summary> /// 缓存 /// </summary> /// <typeparam name="TRtn">缓存的数据类型</typeparam> /// <param name="cache"></param> /// <param name="tableEntityType">表的实体类型(用于获取表名)</param> /// <param name="cacheType">缓存的类型</param> /// <param name="sql"></param> /// <param name="sqlParamModel">sql的参数模型对象</param> /// <param name="ignoreProptsForParamModel">sql的参数模型对象中需要忽略的属性名</param> /// <param name="toDBGet">用于初始化缓存数据(例如:到数据库获取数据进行缓存的操作)</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static TRtn CacheUseModel <TRtn>(this IEFQueryCache cache, Type tableEntityType, string cacheType, string sql, object sqlParamModel, IEnumerable <string> ignoreProptsForParamModel, Func <TRtn> toDBGet, IQueryCacheExpiryPolicy expiryPolicy) { return(cache.CacheUseModel(EFHelper.Services.EFCoreExUtility.GetTableName(tableEntityType), cacheType, sql, sqlParamModel, ignoreProptsForParamModel, toDBGet, expiryPolicy)); }
/// <summary> /// SqlQuery缓存(缓存的类型为:query) /// </summary> /// <typeparam name="T">缓存的数据类型</typeparam> /// <param name="db"></param> /// <param name="tableEntityType">表的实体类型(用于获取表名)</param> /// <param name="sql"></param> /// <param name="sqlParams">sql的参数</param> /// <param name="ignoreProptsForRtnType">数据类型需要忽略的属性名</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static IReadOnlyList <T> QueryCache <T>(this DbContext db, Type tableEntityType, string sql, IDataParameter[] sqlParams, IEnumerable <string> ignoreProptsForRtnType, IQueryCacheExpiryPolicy expiryPolicy) where T : new() { return(EFHelper.Services.Cache.Cache(tableEntityType, _cacheType, sql, sqlParams, () => db.Query <T>(sql, sqlParams, ignoreProptsForRtnType), expiryPolicy)); }
/// <summary> /// SqlQuery缓存(缓存的类型为:query) /// </summary> /// <typeparam name="T">缓存的数据类型</typeparam> /// <param name="db"></param> /// <param name="tableName">表名</param> /// <param name="sql"></param> /// <param name="sqlParams">sql的参数</param> /// <param name="ignoreProptsForRtnType">数据类型需要忽略的属性名</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static IReadOnlyList <T> QueryCacheUseDict <T>(this DbContext db, string tableName, string sql, IDictionary <string, object> sqlParams, IEnumerable <string> ignoreProptsForRtnType, IQueryCacheExpiryPolicy expiryPolicy) where T : new() { return(EFHelper.Services.Cache.CacheUseDict(tableName, _cacheType, sql, sqlParams, () => db.QueryUseDict <T>(sql, sqlParams, ignoreProptsForRtnType), expiryPolicy)); }
/// <summary> /// 缓存 /// </summary> /// <typeparam name="TRtn">缓存的数据类型</typeparam> /// <param name="cache"></param> /// <param name="tableName">表名</param> /// <param name="cacheType">缓存的类型</param> /// <param name="sql"></param> /// <param name="sqlParamModel">sql的参数模型对象</param> /// <param name="ignoreProptsForParamModel">sql的参数模型对象中需要忽略的属性名</param> /// <param name="toDBGet">用于初始化缓存数据(例如:到数据库获取数据进行缓存的操作)</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static TRtn CacheUseModel <TRtn>(this IEFQueryCache cache, string tableName, string cacheType, string sql, object sqlParamModel, IEnumerable <string> ignoreProptsForParamModel, Func <TRtn> toDBGet, IQueryCacheExpiryPolicy expiryPolicy) { return(cache.Cache(tableName, cacheType, EFHelper.Services.EFCoreExUtility.CombineSqlAndParamsToString(sql, EFHelper.Services.ObjReflector.GetPublicInstanceProptValues(sqlParamModel, ignoreProptsForParamModel)), toDBGet, expiryPolicy)); }
/// <summary> /// SqlQuery缓存(缓存的类型为:query) /// </summary> /// <typeparam name="T">缓存的数据类型</typeparam> /// <param name="db"></param> /// <param name="tableEntityType">表的实体类型(用于获取表名)</param> /// <param name="sql"></param> /// <param name="sqlParamModel">sql的参数模型对象</param> /// <param name="ignoreProptsForParamModel">sql的参数模型对象中需要忽略的属性名</param> /// <param name="ignoreProptsForRtnType">数据类型需要忽略的属性名</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static IReadOnlyList <T> QueryCacheUseModel <T>(this DbContext db, Type tableEntityType, string sql, object sqlParamModel, IEnumerable <string> ignoreProptsForParamModel, IEnumerable <string> ignoreProptsForRtnType, IQueryCacheExpiryPolicy expiryPolicy) where T : new() { return(EFHelper.Services.Cache.CacheUseModel(tableEntityType, _cacheType, sql, sqlParamModel, ignoreProptsForParamModel, () => db.QueryUseModel <T>(sql, sqlParamModel, ignoreProptsForParamModel, ignoreProptsForRtnType), expiryPolicy)); }
public TRtn Cache <TRtn>(string tableName, string cacheType, string cacheKey, Func <TRtn> toDBGet, IQueryCacheExpiryPolicy expiryPolicy, Type rtnType = null) { IQueryCache cache; if (CacheContainerMgr.TryGetIfUseCache(tableName, out cache)) { return(cache.Cache(cacheType, cacheKey, toDBGet, expiryPolicy, rtnType)); } else { return(toDBGet()); } }
public TRtn Cache <TRtn>(string cacheType, string cacheKey, Func <TRtn> toDBGet, IQueryCacheExpiryPolicy expiryPolicy, Type rtnType = null) { cacheKey.CheckStringIsNullOrEmpty(nameof(cacheKey)); cacheType.CheckStringIsNullOrEmpty(nameof(cacheType)); //toDBGet.CheckNull(nameof(toDBGet)); TRtn rtn; bool bRtn; if (expiryPolicy == null) { bRtn = TryGetCache(cacheType, cacheKey, out rtn, rtnType); } else { var expiryTime = expiryPolicy.GetExpiryTime(); if (expiryPolicy.IsUpdateEach && expiryTime.HasValue) { bRtn = TryGetCacheAndUpdateCacheTime(cacheType, cacheKey, expiryTime.Value, out rtn, rtnType); } else { bRtn = TryGetCache(cacheType, cacheKey, out rtn, rtnType); } } if (!bRtn) { rtn = toDBGet(); if (expiryPolicy == null) { SetCache(cacheType, cacheKey, rtn, rtnType); } else { var expiryTime = expiryPolicy.GetExpiryTime(); if (expiryTime.HasValue) { SetCache(cacheType, cacheKey, rtn, expiryTime.Value, rtnType); } else { SetCache(cacheType, cacheKey, rtn, rtnType); } } } return(rtn); }
/// <summary> /// FirstOrDefault缓存 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="query"></param> /// <param name="tableName">表名</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static T FirstOrDefaultCache <T>(this IQueryable <T> query, string tableName, IQueryCacheExpiryPolicy expiryPolicy) { return(EFHelper.Services.Cache.FirstOrDefaultCache <T>(tableName, query, expiryPolicy)); }
/// <summary> /// SqlScalar缓存(缓存的类型为:scalar) /// </summary> /// <param name="cache"></param> /// <param name="tableName">表名</param> /// <param name="cacheKey">缓存的key</param> /// <param name="toDBGet">用于初始化缓存数据(例如:到数据库获取数据进行缓存的操作)</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static object ScalarCache(this IEFQueryCache cache, string tableName, string cacheKey, Func <object> toDBGet, IQueryCacheExpiryPolicy expiryPolicy) { return(cache.Cache(tableName, _cacheType, cacheKey, toDBGet, expiryPolicy)); }
/// <summary> /// FirstOrDefault缓存 /// </summary> /// <typeparam name="TEntity">表的实体类型(用于获取表名)</typeparam> /// <typeparam name="T">IQueryable的泛型类型</typeparam> /// <param name="query"></param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static T FirstOrDefaultCache <TEntity, T>(this IQueryable <T> query, IQueryCacheExpiryPolicy expiryPolicy) { return(EFHelper.Services.Cache.FirstOrDefaultCache <TEntity, T>(query, expiryPolicy)); }
/// <summary> /// SqlScalar缓存(缓存的类型为:scalar) /// </summary> /// <typeparam name="TEntity">表的实体类型(用于获取表名)</typeparam> /// <param name="cache"></param> /// <param name="cacheKey">缓存的key</param> /// <param name="toDBGet">用于初始化缓存数据(例如:到数据库获取数据进行缓存的操作)</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static object ScalarCache <TEntity>(this IEFQueryCache cache, string cacheKey, Func <object> toDBGet, IQueryCacheExpiryPolicy expiryPolicy) { return(cache.Cache <TEntity, object>(_cacheType, cacheKey, toDBGet, expiryPolicy)); }
/// <summary> /// ToList缓存 /// </summary> /// <typeparam name="T">IQueryable的泛型类型</typeparam> /// <param name="query"></param> /// <param name="tableName">表名</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static IReadOnlyList <T> ListCache <T>(this IQueryable <T> query, string tableName, IQueryCacheExpiryPolicy expiryPolicy) { return(EFHelper.Services.Cache.ListCache <T>(tableName, query, expiryPolicy)); }
/// <summary> /// FirstOrDefault缓存 /// </summary> /// <typeparam name="T">缓存的数据类型</typeparam> /// <param name="cache"></param> /// <param name="tableName">表名</param> /// <param name="cacheKey">缓存的类型</param> /// <param name="toDBGet">用于初始化缓存数据(例如:到数据库获取数据进行缓存的操作)</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static T FirstOrDefaultCache <T>(this IEFQueryCache cache, string tableName, string cacheKey, Func <T> toDBGet, IQueryCacheExpiryPolicy expiryPolicy) { return(cache.Cache(tableName, _cacheType, cacheKey, toDBGet, expiryPolicy)); }
/// <summary> /// 缓存 /// </summary> /// <typeparam name="TRtn">缓存的数据类型</typeparam> /// <param name="cache"></param> /// <param name="tableEntityType">表的实体类型(用于获取表名)</param> /// <param name="cacheType">缓存的类型</param> /// <param name="sql"></param> /// <param name="sqlParams">sql的参数</param> /// <param name="toDBGet">用于初始化缓存数据(例如:到数据库获取数据进行缓存的操作)</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static TRtn CacheUseDict <TRtn>(this IEFQueryCache cache, Type tableEntityType, string cacheType, string sql, IDictionary <string, object> sqlParams, Func <TRtn> toDBGet, IQueryCacheExpiryPolicy expiryPolicy) { return(cache.CacheUseDict(EFHelper.Services.EFCoreExUtility.GetTableName(tableEntityType), cacheType, sql, sqlParams, toDBGet, expiryPolicy)); }
/// <summary> /// 缓存 /// </summary> /// <typeparam name="TEntity">表的实体类型(用于获取表名)</typeparam> /// <typeparam name="TRtn">缓存的数据类型</typeparam> /// <param name="cache"></param> /// <param name="cacheType">缓存的类型</param> /// <param name="sql"></param> /// <param name="sqlParams">sql的参数</param> /// <param name="toDBGet">用于初始化缓存数据(例如:到数据库获取数据进行缓存的操作)</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static TRtn Cache <TEntity, TRtn>(this IEFQueryCache cache, string cacheType, string sql, ICollection <IDataParameter> sqlParams, Func <TRtn> toDBGet, IQueryCacheExpiryPolicy expiryPolicy) { return(cache.Cache(typeof(TEntity), cacheType, sql, sqlParams, toDBGet, expiryPolicy)); }
/// <summary> /// 缓存 /// </summary> /// <typeparam name="TRtn">缓存的数据类型</typeparam> /// <param name="query"></param> /// <param name="tableName">表名</param> /// <param name="cacheType">缓存的类型</param> /// <param name="toDBGet">用于初始化缓存数据(例如:到数据库获取数据进行缓存的操作)</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static TRtn Cache <TRtn>(this IQueryable query, string tableName, string cacheType, Func <TRtn> toDBGet, IQueryCacheExpiryPolicy expiryPolicy) { return(EFHelper.Services.Cache.Cache <TRtn>(tableName, cacheType, query, toDBGet, expiryPolicy)); }
/// <summary> /// 缓存 /// </summary> /// <typeparam name="TEntity">表的实体类型(用于获取表名)</typeparam> /// <typeparam name="TRtn">缓存的数据类型</typeparam> /// <param name="cache"></param> /// <param name="cacheType">缓存的类型</param> /// <param name="sql"></param> /// <param name="sqlParams">sql的参数</param> /// <param name="toDBGet">用于初始化缓存数据(例如:到数据库获取数据进行缓存的操作)</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static TRtn CacheUseDict <TEntity, TRtn>(this IEFQueryCache cache, string cacheType, string sql, IDictionary <string, object> sqlParams, Func <TRtn> toDBGet, IQueryCacheExpiryPolicy expiryPolicy) { return(cache.CacheUseDict(typeof(TEntity), cacheType, sql, sqlParams, toDBGet, expiryPolicy)); }
/// <summary> /// ToList缓存 /// </summary> /// <typeparam name="T">List缓存的数据类型</typeparam> /// <param name="cache"></param> /// <param name="tableName">表名</param> /// <param name="cacheKey">缓存的key</param> /// <param name="toDBGet">用于初始化缓存数据(例如:到数据库获取数据进行缓存的操作)</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static IReadOnlyList <T> ListCache <T>(this IEFQueryCache cache, string tableName, string cacheKey, Func <IReadOnlyList <T> > toDBGet, IQueryCacheExpiryPolicy expiryPolicy) { return(cache.Cache(tableName, _cacheType, cacheKey, toDBGet, expiryPolicy)); }
/// <summary> /// 缓存 /// </summary> /// <typeparam name="TRtn">缓存的数据类型</typeparam> /// <param name="cache"></param> /// <param name="tableEntityType">表的实体类型(用于获取表名)</param> /// <param name="cacheType">缓存的类型</param> /// <param name="cacheKey"></param> /// <param name="toDBGet">用于初始化缓存数据(例如:到数据库获取数据进行缓存的操作)</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static TRtn Cache <TRtn>(this IEFQueryCache cache, Type tableEntityType, string cacheType, string cacheKey, Func <TRtn> toDBGet, IQueryCacheExpiryPolicy expiryPolicy) { return(cache.Cache(EFHelper.Services.EFCoreExUtility.GetTableName(tableEntityType), cacheType, cacheKey, toDBGet, expiryPolicy)); }
/// <summary> /// 缓存 /// </summary> /// <typeparam name="TEntity">表的实体类型(用于获取表名)</typeparam> /// <typeparam name="TRtn">缓存的数据类型</typeparam> /// <param name="cache"></param> /// <param name="cacheType">缓存的类型</param> /// <param name="cacheKey">缓存的key</param> /// <param name="toDBGet">用于初始化缓存数据(例如:到数据库获取数据进行缓存的操作)</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static TRtn Cache <TEntity, TRtn>(this IEFQueryCache cache, string cacheType, string cacheKey, Func <TRtn> toDBGet, IQueryCacheExpiryPolicy expiryPolicy) { return(cache.Cache(typeof(TEntity), cacheType, cacheKey, toDBGet, expiryPolicy)); }
/// <summary> /// 缓存 /// </summary> /// <typeparam name="TEntity">表的实体类型(用于获取表名)</typeparam> /// <typeparam name="TRtn">缓存的数据类型</typeparam> /// <param name="cache"></param> /// <param name="cacheType">缓存的类型</param> /// <param name="sql"></param> /// <param name="sqlParamModel">sql的参数模型对象</param> /// <param name="ignoreProptsForParamModel">sql的参数模型对象中需要忽略的属性名</param> /// <param name="toDBGet">用于初始化缓存数据(例如:到数据库获取数据进行缓存的操作)</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static TRtn CacheUseModel <TEntity, TRtn>(this IEFQueryCache cache, string cacheType, string sql, object sqlParamModel, IEnumerable <string> ignoreProptsForParamModel, Func <TRtn> toDBGet, IQueryCacheExpiryPolicy expiryPolicy) { return(cache.CacheUseModel(typeof(TEntity), cacheType, sql, sqlParamModel, ignoreProptsForParamModel, toDBGet, expiryPolicy)); }
/// <summary> /// FirstOrDefault缓存 /// </summary> /// <typeparam name="TEntity">表的实体类型(用于获取表名)</typeparam> /// <typeparam name="T">IQueryable的泛型类型</typeparam> /// <param name="cache"></param> /// <param name="query"></param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static T FirstOrDefaultCache <TEntity, T>(this IEFQueryCache cache, IQueryable <T> query, IQueryCacheExpiryPolicy expiryPolicy) { return(cache.Cache <TEntity, T>(_cacheType, query, () => query.FirstOrDefault(), expiryPolicy)); }
/// <summary> /// ToList缓存 /// </summary> /// <typeparam name="T">IQueryable的泛型类型</typeparam> /// <param name="cache"></param> /// <param name="tableName">表名</param> /// <param name="query"></param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static IReadOnlyList <T> ListCache <T>(this IEFQueryCache cache, string tableName, IQueryable <T> query, IQueryCacheExpiryPolicy expiryPolicy) { return(cache.Cache(tableName, _cacheType, query, () => query.ToList(), expiryPolicy)); }
/// <summary> /// FirstOrDefault缓存 /// </summary> /// <typeparam name="T">IQueryable的泛型类型</typeparam> /// <param name="cache"></param> /// <param name="tableName">表名</param> /// <param name="query"></param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static T FirstOrDefaultCache <T>(this IEFQueryCache cache, string tableName, IQueryable <T> query, IQueryCacheExpiryPolicy expiryPolicy) { return(cache.Cache(tableName, _cacheType, query, () => query.FirstOrDefault(), expiryPolicy)); }
/// <summary> /// ToList缓存 /// </summary> /// <typeparam name="TEntity">表的实体类型(用于获取表名)</typeparam> /// <typeparam name="T">IQueryable的泛型类型</typeparam> /// <param name="cache"></param> /// <param name="query"></param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static IReadOnlyList <T> ListCache <TEntity, T>(this IEFQueryCache cache, IQueryable <T> query, IQueryCacheExpiryPolicy expiryPolicy) { return(cache.Cache <TEntity, IReadOnlyList <T> >(_cacheType, query, () => query.ToList(), expiryPolicy)); }
/// <summary> /// 缓存 /// </summary> /// <typeparam name="TRtn">缓存的数据类型</typeparam> /// <param name="cache"></param> /// <param name="tableName">表名</param> /// <param name="cacheType">缓存的类型</param> /// <param name="sql"></param> /// <param name="sqlParams">sql的参数</param> /// <param name="toDBGet">用于初始化缓存数据(例如:到数据库获取数据进行缓存的操作)</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static TRtn CacheUseDict <TRtn>(this IEFQueryCache cache, string tableName, string cacheType, string sql, IDictionary <string, object> sqlParams, Func <TRtn> toDBGet, IQueryCacheExpiryPolicy expiryPolicy) { return(cache.Cache(tableName, cacheType, EFHelper.Services.EFCoreExUtility.CombineSqlAndParamsToString(sql, sqlParams), toDBGet, expiryPolicy)); }
/// <summary> /// 缓存 /// </summary> /// <typeparam name="TRtn">缓存的数据类型</typeparam> /// <param name="cache"></param> /// <param name="tableEntityType">表的实体类型(用于获取表名)</param> /// <param name="cacheType">缓存的类型</param> /// <param name="sql"></param> /// <param name="sqlParams">sql的参数</param> /// <param name="toDBGet">用于初始化缓存数据(例如:到数据库获取数据进行缓存的操作)</param> /// <param name="expiryPolicy">缓存过期策略</param> /// <returns></returns> public static TRtn Cache <TRtn>(this IEFQueryCache cache, Type tableEntityType, string cacheType, string sql, ICollection <IDataParameter> sqlParams, Func <TRtn> toDBGet, IQueryCacheExpiryPolicy expiryPolicy) { return(cache.Cache(EFHelper.Services.EFCoreExUtility.GetTableName(tableEntityType), cacheType, sql, sqlParams, toDBGet, expiryPolicy)); }