Exemple #1
0
        /// <summary>
        /// 得到缓存
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="query"></param>
        /// <returns></returns>
        protected virtual QueryCacheInfo <T> GetQueryCacheInfo <T>(QueryInfo query)
        {
            QueryCacheInfo <T> cacheResult = null;

            if (query.Cache.Time != DateTime.MinValue || query.Cache.TimeSpan != 0)
            {
                cacheResult = GetCache <QueryCacheInfo <T> >(query.Cache.Key);
            }
            //if ((cacheResult == null || cacheResult.Result==null) && (query.Cache.Time2 != DateTime.MinValue || query.Cache.TimeSpan2 != 0))
            //{
            //    cacheResult = GetCache<QueryCacheInfo<T>>(query.Cache.Key);
            //}
            return(cacheResult);
        }
Exemple #2
0
        /// <summary>
        /// 从缓存中查询
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="query"></param>
        /// <param name="obj"></param>
        /// <returns></returns>
        protected virtual T GetInfosByCache <T>(QueryInfo query, OrmObjectInfo obj)
        {
            SetQueryCustomCacheKey(query, obj);
            QueryCacheInfo <T> cacheResult = GetQueryCacheInfo <T>(query);

            if (null == cacheResult || cacheResult.Result == null)
            {
                lock (KeyLoker)
                {
                    cacheResult = GetQueryCacheInfo <T>(query);
                    if (null == cacheResult || cacheResult.Result == null)
                    {
                        cacheResult = new QueryCacheInfo <T>
                        {
                            Result    = Executor.GetInfos <T>(obj, query, this, true),
                            DataCount = query.DataCount
                        };
                        //if (query.Cache.TimeSpan != 0)
                        //{
                        //    SetLocalCache(query.Cache.Key, cacheResult, query.Cache.TimeSpan);
                        //}
                        //else if (query.Cache.Time != DateTime.MinValue)
                        //{
                        //    SetLocalCache(query.Cache.Key, cacheResult, query.Cache.Time);
                        //}
                        if (query.Cache.TimeSpan != 0)
                        {
                            SetCache(query.Cache.Key, cacheResult, query.Cache.TimeSpan);
                        }
                        else if (query.Cache.Time != DateTime.MinValue)
                        {
                            SetCache(query.Cache.Key, cacheResult, query.Cache.Time);
                        }
                    }
                }
            }
            query.DataCount = cacheResult.DataCount;
            return(cacheResult.Result);
        }
Exemple #3
0
        /// <summary>
        /// 从缓存中查询
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="query"></param>
        /// <param name="obj"></param>
        /// <returns></returns>
        protected virtual T GetInfosByCache <T>(QueryInfo query, OrmObjectInfo obj)
        {
            SetQueryCustomCacheKey(query, obj);
            QueryCacheInfo <T> cacheResult = GetQueryCache <T>(obj, query);

            if (null == cacheResult || cacheResult.Result == null)
            {
                lock (KeyLoker)
                {
                    if (null == cacheResult || cacheResult.Result == null)
                    {
                        cacheResult = new QueryCacheInfo <T>
                        {
                            Result    = Executor.GetInfos <T>(obj, query, this, true),
                            DataCount = query.DataCount
                        };
                        SetQueryCache(obj, query, cacheResult);
                    }
                }
            }
            query.DataCount = cacheResult.DataCount;
            return(cacheResult.Result);
        }
Exemple #4
0
 /// <summary>
 /// 得到缓存
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <returns></returns>
 protected virtual void SetQueryCache <T>(OrmObjectInfo obj, QueryInfo query, QueryCacheInfo <T> cacheResult)
 {
     if (query.Cache.Type == CacheType.None)
     {
         return;
     }
     if (query.Cache.Time == DateTime.MinValue && query.Cache.TimeSpan == 0)
     {
         return;
     }
     if (query.Cache.Dependencies != null && query.Cache.Dependencies.Count > 0)
     {
         foreach (var dependency in query.Cache.Dependencies)
         {
             string subVersionKey = GetVersionCacheKey(dependency);
             var    version       = GetRemoteCache <string>(subVersionKey);
             if (string.IsNullOrWhiteSpace(version))
             {
                 version = DateTime.Now.ToString("yyyyMMddHHmmss");
                 if (query.Cache.TimeSpan != 0)
                 {
                     SetRemoteCache(subVersionKey, version, query.Cache.TimeSpan);
                 }
                 else if (query.Cache.Time != DateTime.MinValue)
                 {
                     SetRemoteCache(subVersionKey, version, query.Cache.Time);
                 }
             }
             if (query.Cache.TimeSpan != 0)
             {
                 SetLocalCache(subVersionKey, version, query.Cache.TimeSpan);
             }
             else if (query.Cache.Time != DateTime.MinValue)
             {
                 SetLocalCache(subVersionKey, version, query.Cache.Time);
             }
             if (query.Cache.DependencyDelegate != null && !DependencyDelegates.ContainsKey(subVersionKey))
             {
                 DependencyDelegates.Add(subVersionKey, query.Cache.DependencyDelegate);
             }
         }
     }
     if (query.Cache.Type == CacheType.Local || query.Cache.Type == CacheType.LocalAndRemote)
     {
         if (query.Cache.TimeSpan != 0)
         {
             SetLocalCache(query.Cache.Key, cacheResult, query.Cache.TimeSpan);
         }
         else if (query.Cache.Time != DateTime.MinValue)
         {
             SetLocalCache(query.Cache.Key, cacheResult, query.Cache.Time);
         }
     }
     if (query.Cache.Type == CacheType.Remote || query.Cache.Type == CacheType.LocalAndRemote)
     {
         if (query.Cache.TimeSpan != 0)
         {
             SetRemoteCache(query.Cache.Key, cacheResult, query.Cache.TimeSpan);
         }
         else if (query.Cache.Time != DateTime.MinValue)
         {
             SetRemoteCache(query.Cache.Key, cacheResult, query.Cache.Time);
         }
     }
 }