/// <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; }
/// <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)); }
/// <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; } }
/// <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(); }
/// <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; }
/// <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; }
/// <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); } }
/// <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; }
/// <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(); } }
/// <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(); }
/// <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(); }
/// <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)); }
/// <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) { }
/// <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) { }
/// <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) { }
/// <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) { }
/// <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) { }
/// <summary> /// 更新事件绑定 /// </summary> /// <param name="sqlTool">SQL操作工具类</param> public void Set(sqlTable.sqlToolBase <valueType, memberType> sqlTool) { sqlTool.OnInserted += update; sqlTool.OnUpdated += update; sqlTool.OnDeleted += update; }
/// <summary> /// 事件缓存 /// </summary> /// <param name="sqlTool">SQL操作工具</param> /// <param name="memberMap">数据成员位图</param> protected eventCache(sqlTable.sqlToolBase <valueType, memberType> sqlTool, memberType memberMap) : base(sqlTool, memberMap) { }