예제 #1
0
 /// <summary>
 /// 自增ID整表数组缓存
 /// </summary>
 /// <param name="sqlTool">SQL操作工具</param>
 /// <param name="memberMap">数据成员位图</param>
 /// <param name="getIdentity">自增ID获取器</param>
 protected identityMemberMap(sqlTable.sqlToolBase <valueType, memberType> sqlTool, memberType memberMap, func <valueType, int> getIdentity)
     : base(sqlTool, memberMap)
 {
     if (getIdentity == null)
     {
         log.Default.Throw(log.exceptionType.Null);
     }
     this.getIdentity = getIdentity;
 }
예제 #2
0
        /// <summary>
        /// 查询对象集合
        /// </summary>
        /// <typeparam name="valueType">对象类型</typeparam>
        /// <typeparam name="memberType">成员位图类型</typeparam>
        /// <param name="sqlTool">SQL操作工具</param>
        /// <param name="query">查询信息</param>
        /// <param name="memberMap">成员位图</param>
        /// <returns>对象集合</returns>
        private IEnumerable <valueType> selectRows <valueType, memberType>
            (sqlTable.sqlToolBase <valueType, memberType> sqlTool, selectQuery query, memberType memberMap)
            where valueType : class
            where memberType : IMemberMap <memberType>
        {
            string sql = @"select * from(select " + getMemberNames(sqlTool.MemberInfo, memberMap).joinString(',') + ",row_number()over(" + query.Order + ")as " + orderOverName + " from[" + sqlTool.TableName + "]with(nolock)" + (query.Where != null ? "where " + query.Where + " " : null) + ")as T where " + orderOverName + " between " + query.SkipCount.toString() + " and " + (query.SkipCount + query.GetCount - 1).toString();

            return(select <valueType, memberType>(sql, sqlTool, 0, memberMap));
        }
예제 #3
0
 /// <summary>
 /// 自增ID整表数组缓存
 /// </summary>
 /// <param name="sqlTool">SQL操作工具</param>
 /// <param name="memberMap">数据成员位图</param>
 /// <param name="getIdentity">自增ID获取器</param>
 /// <param name="isEvent">是否绑定更新事件</param>
 protected identityCache
     (sqlTable.sqlToolBase <valueType, memberType> sqlTool, memberType memberMap, func <valueType, int> getIdentity, bool isEvent)
     : base(sqlTool, memberMap, getIdentity)
 {
     if (isEvent)
     {
         //sqlTool.OnUpdatedByIdentityLock += onUpdated;
         sqlTool.OnUpdatedLock += onUpdated;
     }
 }
예제 #4
0
        /// <summary>
        /// 自增ID整表数组缓存
        /// </summary>
        /// <param name="sqlTool">SQL操作工具</param>
        /// <param name="addLength">数组长度递增</param>
        /// <param name="memberMap">数据成员位图</param>
        public identityTreeBase
            (sqlTable.sqlToolBase <valueType, memberType> sqlTool, memberType memberMap, func <valueType, int> getIdentity)
            : base(sqlTool, memberMap, getIdentity, true)
        {
            sqlTool.OnInsertedLock += onInserted;
            //sqlTool.OnDeletedByIdentityLock += onDelete;
            sqlTool.OnDeletedLock += onDelete;

            reset();
        }
예제 #5
0
 /// <summary>
 /// 先进先出优先队列缓存
 /// </summary>
 /// <param name="sqlTool">SQL操作工具</param>
 /// <param name="memberMap">数据成员位图</param>
 /// <param name="getKey">缓存关键字获取器</param>
 /// <param name="maxCount">缓存默认最大容器大小</param>
 protected queue(sqlTable.sqlToolBase <valueType, memberType> sqlTool, memberType memberMap
                 , func <valueType, keyType> getKey, int maxCount)
     : base(sqlTool, memberMap)
 {
     if (getKey == null)
     {
         log.Default.Throw(log.exceptionType.Null);
     }
     this.getKey   = getKey;
     this.maxCount = maxCount <= 0 ? config.sql.Default.CacheMaxCount : maxCount;
 }
예제 #6
0
        /// <summary>
        /// 先进先出优先队列 列表缓存
        /// </summary>
        /// <param name="counter">缓存计数器</param>
        /// <param name="getKey">缓存关键字获取器</param>
        /// <param name="getWhere">条件表达式获取器</param>
        /// <param name="memberMap">数据成员位图</param>
        /// <param name="maxCount">缓存默认最大容器大小</param>
        public queueList(sqlTable.sqlToolBase <valueType, memberType> sqlTool, func <valueType, keyType> getKey
                         , func <keyType, Expression <func <valueType, bool> > > getWhere, memberType memberMap = default(memberType), int maxCount = 0)
            : base(sqlTool, memberMap, getKey, maxCount)
        {
            if (getWhere == null)
            {
                log.Default.Throw(log.exceptionType.Null);
            }
            this.getWhere = getWhere;

            sqlTool.OnInsertedLock += onInserted;
        }
예제 #7
0
 /// <summary>
 /// SQL操作缓存
 /// </summary>
 /// <param name="sqlTool">SQL操作工具</param>
 /// <param name="memberMap">数据成员位图</param>
 protected sqlTool(sqlTable.sqlToolBase <valueType, memberType> sqlTool, memberType memberMap)
 {
     if (sqlTool == null)
     {
         log.Default.Throw(log.exceptionType.Null);
     }
     SqlTool        = sqlTool;
     this.memberMap = sqlTool.MemberMap;
     if (!memberMap.IsDefault)
     {
         this.memberMap.And(memberMap);
     }
 }
예제 #8
0
        /// <summary>
        /// 缓存计数
        /// </summary>
        /// <param name="sqlTool">SQL操作工具</param>
        /// <param name="getKey">缓存关键字获取器</param>
        /// <param name="memberMap">数据成员位图</param>
        protected counter(sqlTable.sqlToolBase <valueType, memberType> sqlTool, memberType memberMap, func <valueType, keyType> getKey)
            : base(sqlTool, memberMap)
        {
            if (getKey == null)
            {
                log.Default.Throw(log.exceptionType.Null);
            }
            GetKey = getKey;
            values = new Dictionary <keyType, keyValue <valueType, int> >();

            //sqlTool.OnUpdatedByIdentityLock += onUpdated;
            sqlTool.OnUpdatedLock += onUpdated;
            sqlTool.OnDeletedLock += onDeleted;
        }
예제 #9
0
        /// <summary>
        /// 自增ID整表数组缓存
        /// </summary>
        /// <param name="sqlTool">SQL操作工具</param>
        /// <param name="memberMap">数据成员位图</param>
        /// <param name="getIdentity">自增ID获取器</param>
        /// <param name="isReset">是否初始化事件与数据</param>
        /// <param name="addLength">数组长度递增</param>
        public identityArrayBase(sqlTable.sqlToolBase <valueType, memberType> sqlTool, memberType memberMap, func <valueType, int> getIdentity
                                 , bool isReset, int addLength)
            : base(sqlTool, memberMap, getIdentity, isReset)
        {
            this.addLength = addLength == 0 ? (1 << 16) : (addLength < 1024 ? 1024 : addLength);

            if (isReset)
            {
                sqlTool.OnInsertedLock += onInserted;
                //sqlTool.OnDeletedByIdentityLock += onDelete;
                sqlTool.OnDeletedLock += onDeleted;

                reset();
            }
        }
예제 #10
0
        /// <summary>
        /// 自增ID整表数组缓存
        /// </summary>
        /// <param name="sqlTool">SQL操作工具</param>
        /// <param name="memberMap">数据成员位图</param>
        /// <param name="getIdentity">自增ID获取器</param>
        /// <param name="isValue">数据匹配器,必须保证更新数据的匹配一致性</param>
        /// <param name="addLength">数组长度递增</param>
        public identityArrayWhereBase(sqlTable.sqlToolBase <valueType, memberType> sqlTool, memberType memberMap, func <valueType, int> getIdentity
                                      , func <valueType, bool> isValue, int addLength = 0)
            : base(sqlTool, memberMap, getIdentity, false, addLength)
        {
            if (isValue == null)
            {
                log.Default.Throw(log.exceptionType.Null);
            }
            this.isValue = isValue;

            sqlTool.OnInsertedLock += onInserted;
            sqlTool.OnUpdatedLock  += onUpdated;
            sqlTool.OnDeletedLock  += onDeleted;

            reset();
        }
예제 #11
0
        /// <summary>
        /// 关键字整表缓存
        /// </summary>
        /// <param name="sqlTool">SQL操作工具</param>
        /// <param name="getKey">键值获取器</param>
        /// <param name="memberMap">数据成员位图</param>
        public key
            (sqlTable.sqlToolBase <valueType, memberType> sqlTool, func <valueType, keyType> getKey, memberType memberMap = default(memberType))
            : base(sqlTool, memberMap)
        {
            if (getKey == null)
            {
                log.Default.Throw(log.exceptionType.Null);
            }
            this.getKey = getKey;

            sqlTool.OnInsertedLock += onInserted;
            sqlTool.OnUpdatedLock  += onUpdated;
            sqlTool.OnDeletedLock  += onDeleted;

            reset();
        }
        /// <summary>
        /// 自增ID整表数组缓存
        /// </summary>
        /// <param name="sqlTool">SQL操作工具</param>
        /// <param name="memberMap">数据成员位图</param>
        /// <param name="getIdentity">自增ID获取器</param>
        /// <param name="isValue">数据匹配器,必须保证更新数据的匹配一致性</param>
        public identityDictionaryWhereBase(sqlTable.sqlToolBase <valueType, memberType> sqlTool, memberType memberMap
                                           , func <valueType, int> getIdentity, func <valueType, bool> isValue)
            : base(sqlTool, memberMap, getIdentity)
        {
            if (isValue == null)
            {
                log.Default.Throw(log.exceptionType.Null);
            }
            this.isValue = isValue;

            sqlTool.OnInserted += onInserted;
            sqlTool.OnUpdated  += onUpdated;
            sqlTool.OnDeleted  += onDeleted;

            reset();
        }
예제 #13
0
 /// <summary>
 /// 查询对象集合
 /// </summary>
 /// <typeparam name="valueType">对象类型</typeparam>
 /// <typeparam name="memberType">成员位图类型</typeparam>
 /// <param name="sqlTool">SQL操作工具</param>
 /// <param name="query">查询信息</param>
 /// <param name="memberMap">成员位图</param>
 /// <returns>对象集合</returns>
 internal override IEnumerable <valueType> select <valueType, memberType>
     (sqlTable.sqlToolBase <valueType, memberType> sqlTool, selectQuery query, memberType memberMap)
 {
     if (query.SkipCount != 0 && query.Orders.length() != 0)
     {
         if (sqlTool.PrimaryKeyCount == 1)
         {
             return(selectKeys(sqlTool, query, sqlTool.FirstPrimaryKeyName, memberMap));
         }
         if (sqlTool.IdentityMemberIndex != sqlTable.NullIdentityMemberIndex)
         {
             return(selectKeys(sqlTool, query, sqlTool.MemberInfo.GetName(sqlTool.IdentityMemberIndex), memberMap));
         }
         return(selectRows(sqlTool, query, memberMap));
     }
     return(selectNoOrder(sqlTool, query, memberMap));
 }
예제 #14
0
 /// <summary>
 /// 更新事件绑定
 /// </summary>
 /// <typeparam name="valueType">表格绑定类型</typeparam>
 /// <typeparam name="memberType">成员位图类型</typeparam>
 /// <param name="sqlTool">SQL操作工具类</param>
 /// <param name="table">表格编号</param>
 public void Set <valueType, memberType>(sqlTable.sqlToolBase <valueType, memberType> sqlTool, int table)
     where valueType : class
     where memberType : IMemberMap <memberType>
 {
     new sqlTool <valueType, memberType>(this, table).Set(sqlTool);
 }
 /// <summary>
 /// 自增ID整表数组缓存
 /// </summary>
 /// <param name="sqlTool">SQL操作工具</param>
 /// <param name="isValue">数据匹配器,必须保证更新数据的匹配一致性</param>
 /// <param name="memberMap">数据成员位图</param>
 public identityDictionaryWhere(sqlTable.sqlToolBase <valueType, memberType> sqlTool
                                , func <valueType, bool> isValue, memberType memberMap = default(memberType))
     : base(sqlTool, memberMap, value => value.SqlIdentity32, isValue)
 {
 }
예제 #16
0
 /// <summary>
 /// 自增ID整表数组缓存
 /// </summary>
 /// <param name="sqlTool">SQL操作工具</param>
 /// <param name="addLength">数组长度递增</param>
 /// <param name="memberMap">数据成员位图</param>
 /// <param name="isReset">是否初始化事件与数据</param>
 public identityArray(sqlTable.sqlToolBase <valueType, memberType> sqlTool
                      , memberType memberMap = default(memberType), int addLength = 0, bool isReset = true)
     : base(sqlTool, memberMap, value => value.SqlIdentity32, isReset, addLength)
 {
 }
예제 #17
0
 /// <summary>
 /// 自增ID整表数组缓存
 /// </summary>
 /// <param name="sqlTool">SQL操作工具</param>
 /// <param name="isValue">数据匹配器,必须保证更新数据的匹配一致性</param>
 /// <param name="addLength">数组长度递增</param>
 /// <param name="memberMap">数据成员位图</param>
 public identityArrayWhere(sqlTable.sqlToolBase <valueType, memberType> sqlTool, func <valueType, bool> isValue
                           , memberType memberMap = default(memberType), int addLength = 0)
     : base(sqlTool, memberMap, value => value.SqlIdentity32, isValue, addLength)
 {
 }
예제 #18
0
 /// <summary>
 /// 关键字缓存计数器
 /// </summary>
 /// <param name="sqlTool">SQL操作工具</param>
 /// <param name="memberMap">数据成员位图</param>
 public primaryKeyCounter
     (sqlTable.sqlToolBase <valueType, memberType> sqlTool, memberType memberMap = default(memberType))
     : base(sqlTool, memberMap, value => value.SqlPrimaryKey)
 {
 }
예제 #19
0
 /// <summary>
 /// 自增id标识缓存计数器
 /// </summary>
 /// <param name="sqlTool">SQL操作工具</param>
 /// <param name="memberMap">数据成员位图</param>
 public identityCounter
     (sqlTable.sqlToolBase <valueType, memberType> sqlTool, memberType memberMap = default(memberType))
     : base(sqlTool, memberMap, value => value.SqlIdentity32)
 {
 }
예제 #20
0
 /// <summary>
 /// 更新事件绑定
 /// </summary>
 /// <param name="sqlTool">SQL操作工具类</param>
 public void Set(sqlTable.sqlToolBase <valueType, memberType> sqlTool)
 {
     sqlTool.OnInserted += update;
     sqlTool.OnUpdated  += update;
     sqlTool.OnDeleted  += update;
 }
예제 #21
0
 /// <summary>
 /// 事件缓存
 /// </summary>
 /// <param name="sqlTool">SQL操作工具</param>
 /// <param name="memberMap">数据成员位图</param>
 protected eventCache(sqlTable.sqlToolBase <valueType, memberType> sqlTool, memberType memberMap)
     : base(sqlTool, memberMap)
 {
 }