/// <summary> /// 更新缓存数据 /// </summary> /// <param name="value">缓存数据</param> /// <param name="newValue">更新后的新数据</param> /// <param name="oldValue">更新前的数据</param> /// <param name="updateMemberMap">更新成员位图</param> protected void update(valueType value, valueType newValue, valueType oldValue, MemberMap <modelType> updateMemberMap) { using (MemberMap <modelType> memberMap = MemberMap.Copy()) { memberMap.And(updateMemberMap); AutoCSer.MemberCopy.Copyer <modelType> .Copy(value, newValue, memberMap); memberMap.Xor(MemberMap); memberMap.And(MemberMap); AutoCSer.MemberCopy.Copyer <modelType> .Copy(oldValue, value, memberMap); AutoCSer.MemberCopy.Copyer <modelType> .Copy(newValue, value, memberMap); } }
/// <summary> /// 设置真实成员位图 /// </summary> /// <typeparam name="valueType"></typeparam> /// <typeparam name="modelType"></typeparam> /// <param name="sqlTool"></param> /// <param name="memberMap"></param> internal override void SetRealMemberMap <valueType, modelType>(Sql.Table <valueType, modelType> sqlTool, MemberMap <modelType> memberMap) { if (sqlTool.Attribute.IsSetRealMemberMap) { MemberMap <modelType> realMemberMap = MemberMap <modelType> .NewEmpty(); using (DbConnection connection = GetConnection()) using (DbCommand command = getCommand(connection, "select top 1 * from [" + sqlTool.TableName + "]", CommandType.Text)) using (DataSet dataSet = getDataSet(command)) { foreach (DataColumn dataColumn in dataSet.Tables[0].Columns) { realMemberMap.SetMember(dataColumn.ColumnName); } } memberMap.And(realMemberMap); } }