/// <summary>
 /// SqlNonQuery
 /// </summary>
 /// <param name="configExecutor"></param>
 /// <param name="paramsModel">sql的参数模型对象</param>
 /// <param name="ignoreProptsForParamModel">sql的参数模型对象中需要忽略的属性名</param>
 /// <param name="clearPolicy">缓存清理策略</param>
 /// <returns></returns>
 public static int NonQueryUseModel(this ISqlConfigExecutor configExecutor, object paramsModel,
                                    IEnumerable <string> ignoreProptsForParamModel,
                                    SqlClearCachePolicy clearPolicy = null)
 {
     return(configExecutor.NonQuery(EFHelper.Services.SqlParamConverter.ObjectToDBParams(configExecutor.DB, paramsModel,
                                                                                         ignoreProptsForParamModel), ToPolicies(clearPolicy)));
 }
 /// <summary>
 /// SqlNonQuery
 /// </summary>
 /// <param name="configExecutor"></param>
 /// <param name="parameters">sql的参数</param>
 /// <param name="clearPolicy">缓存清理策略</param>
 /// <returns></returns>
 public static int NonQueryUseDict(this ISqlConfigExecutor configExecutor,
                                   IDictionary <string, object> parameters,
                                   SqlClearCachePolicy clearPolicy = null)
 {
     return(configExecutor.NonQuery(EFHelper.Services.SqlParamConverter.DictionaryToDBParams(configExecutor.DB, parameters),
                                    ToPolicies(clearPolicy)));
 }
Пример #3
0
        protected void ClearCache(string tableName, SqlClearCachePolicy policy)
        {
            //清理所在表下的所有缓存
            if (policy.IsSelfAll)
            {
                _cache.Remove(tableName);
            }
            else
            {
                //清理所在表下的CacheType
                if (policy.CacheTypes?.Count > 0)
                {
                    foreach (var ct in policy.CacheTypes)
                    {
                        _cache.Remove(tableName, ct);
                    }
                }
            }

            //清理其他的Table
            if (policy.Tables?.Count > 0)
            {
                foreach (var t in policy.Tables)
                {
                    _cache.Remove(t);
                }
            }

            //清理其他的Table下的CachcType
            if (policy.TableCacheTypes?.Count > 0)
            {
                foreach (var pair in policy.TableCacheTypes)
                {
                    if (pair.Value?.Count > 0)
                    {
                        foreach (var ct in pair.Value)
                        {
                            _cache.Remove(pair.Key, ct);
                        }
                    }
                }
            }
        }