Esempio n. 1
0
        /// <summary>
        /// 先进先出优先队列缓存(非计数缓存)
        /// </summary>
        /// <param name="valueMember">节点成员</param>
        /// <param name="previousMember">前一个节点成员</param>
        /// <param name="nextMember">后一个节点成员</param>
        /// <param name="maxCount">缓存默认最大容器大小</param>
        protected memberQueue(Expression <Func <memberCacheType, cacheValueType> > valueMember, Expression <Func <memberCacheType, memberCacheType> > previousMember
                              , Expression <Func <memberCacheType, memberCacheType> > nextMember, int maxCount)
        {
            if (valueMember == null || previousMember == null || nextMember == null)
            {
                log.Error.Throw(log.exceptionType.Null);
            }
            memberExpression <memberCacheType, cacheValueType> valueExpression = new memberExpression <memberCacheType, cacheValueType>(valueMember);

            if (valueExpression.Field == null)
            {
                log.Error.Throw(log.exceptionType.ErrorOperation);
            }
            memberExpression <memberCacheType, memberCacheType> previousExpression = new memberExpression <memberCacheType, memberCacheType>(previousMember);

            if (previousExpression.Field == null)
            {
                log.Error.Throw(log.exceptionType.ErrorOperation);
            }
            memberExpression <memberCacheType, memberCacheType> nextExpression = new memberExpression <memberCacheType, memberCacheType>(nextMember);

            if (nextExpression.Field == null)
            {
                log.Error.Throw(log.exceptionType.ErrorOperation);
            }
            getMemberValue = valueExpression.GetMember;
            setMemberValue = valueExpression.SetMember;
            getPrevious    = previousExpression.GetMember;
            setPrevious    = previousExpression.SetMember;
            getNext        = nextExpression.GetMember;
            setNext        = nextExpression.SetMember;
            this.maxCount  = maxCount <= 0 ? config.sql.Default.CacheMaxCount : maxCount;
        }
Esempio n. 2
0
        /// <summary>
        /// 关键字整表缓存
        /// </summary>
        /// <param name="sqlTool">SQL操作工具</param>
        /// <param name="getKey">键值获取器</param>
        /// <param name="getValue">根据关键字获取数据</param>
        /// <param name="member">缓存字段表达式</param>
        /// <param name="group">数据分组</param>
        public memberKey(cache<valueType, modelType> cache, Func<modelType, keyType> getKey
            , Func<keyType, valueType> getValue, Expression<Func<valueType, valueType>> member, int group = 1)
            : base(cache.SqlTool, null, getKey, group)
        {
            if (getValue == null || member == null) log.Error.Throw(log.exceptionType.Null);
            memberExpression<valueType, valueType> expression = new memberExpression<valueType, valueType>(member);
            if (expression.Field == null) log.Error.Throw(log.exceptionType.ErrorOperation);
            this.cache = cache;
            this.getValue = getValue;
            getMember = expression.GetMember;
            setMember = expression.SetMember;

            cache.SqlTool.OnInsertedLock += onInserted;
            cache.SqlTool.OnUpdatedLock += onUpdated;
            cache.SqlTool.OnDeletedLock += onDeleted;

            resetLock();
        }
Esempio n. 3
0
        /// <summary>
        /// 分组列表缓存
        /// </summary>
        /// <param name="cache">整表缓存</param>
        /// <param name="getKey">分组字典关键字获取器</param>
        /// <param name="getValue">获取目标对象委托</param>
        /// <param name="member">缓存字段表达式</param>
        /// <param name="getTargets">获取缓存目标对象集合</param>
        public member(events.cache <valueType, modelType> cache, Func <modelType, keyType> getKey, Func <keyType, targetType> getValue
                      , Expression <Func <targetType, cacheType> > member, Func <IEnumerable <targetType> > getTargets)
        {
            if (cache == null)
            {
                log.Error.Throw("cache is null", null, false);
            }
            if (getKey == null || getValue == null || getTargets == null || member == null)
            {
                log.Error.Throw(log.exceptionType.Null);
            }
            memberExpression <targetType, cacheType> expression = new memberExpression <targetType, cacheType>(member);

            if (expression.Field == null)
            {
                log.Error.Throw(log.exceptionType.ErrorOperation);
            }
            this.cache      = cache;
            this.getKey     = getKey;
            this.getValue   = getValue;
            this.getTargets = getTargets;
            GetMember       = expression.GetMember;
            setMember       = expression.SetMember;
        }
Esempio n. 4
0
        ///// <summary>
        ///// 缓存计数
        ///// </summary>
        ///// <param name="sqlTool">SQL操作工具</param>
        ///// <param name="getKey">缓存关键字获取器</param>
        ///// <param name="group">数据分组</param>
        //protected memberCounterBase(fastCSharp.emit.sqlTable.sqlTool<valueType, modelType> sqlTool, int group, Expression<Func<modelType, keyType>> getKey
        //    , Func<keyType, targetType> getValue, Expression<Func<targetType, keyValue<valueType, int>>> member)
        //    : this(sqlTool, group, getKey == null ? null : getKey.Compile(), getValue, member)
        //{
        //    sqlTool.SetSelectMember(getKey);
        //}
        /// <summary>
        /// 缓存计数
        /// </summary>
        /// <param name="sqlTool">SQL操作工具</param>
        /// <param name="getKey">缓存关键字获取器</param>
        /// <param name="group">数据分组</param>
        protected memberCounter(whole.events.cache <valueType, modelType, memberCacheType> cache, int group, Func <modelType, keyType> getKey
                                , Func <keyType, targetType> getByKey, Func <valueType, targetType> getValue, Expression <Func <targetType, keyValue <valueType, int> > > member)
            : base(cache.SqlTool, group)
        {
            if (getKey == null || getByKey == null || getValue == null || member == null)
            {
                log.Error.Throw(log.exceptionType.Null);
            }
            memberExpression <targetType, keyValue <valueType, int> > expression = new memberExpression <targetType, keyValue <valueType, int> >(member);

            if (expression.Field == null)
            {
                log.Error.Throw(log.exceptionType.ErrorOperation);
            }
            GetKey        = getKey;
            GetByKey      = getByKey;
            this.GetValue = getValue;
            GetMember     = expression.GetMember;
            setMember     = expression.SetMember;

            cache.SqlTool.OnUpdatedLock += onUpdated;
            //cache.OnUpdated += onUpdated;
            cache.OnDeleted += onDeleted;
        }