/// <summary> /// 添加数据 /// </summary> /// <param name="value">数据对象</param> /// <param name="key"></param> /// <param name="index"></param> protected void onInserted(valueType value, keyType key, int index) { targetType target = getValue(key); if (target == null) { cache.SqlTable.Log.add(AutoCSer.Log.LogType.Debug | AutoCSer.Log.LogType.Info, typeof(valueType).FullName + " 没有找到缓存目标对象 " + key.ToString()); } else { LadyOrderArray <valueType>[] arrays = getMember(target); LadyOrderArray <valueType> array; if (arrays == null) { setMember(target, arrays = new LadyOrderArray <valueType> [arraySize]); array = null; } else { array = arrays[index]; } if (array == null) { arrays[index] = array = new LadyOrderArray <valueType>(); } array.Insert(value); } }
/// <summary> /// 更新数据 /// </summary> /// <param name="cacheValue"></param> /// <param name="value">更新后的数据</param> /// <param name="oldValue">更新前的数据</param> /// <param name="memberMap"></param> protected void onUpdated(valueType cacheValue, valueType value, valueType oldValue, MemberMap <modelType> memberMap) { keyType key = getKey(value), oldKey = getKey(oldValue); if (key.Equals(oldKey)) { targetType target = getValue(key); if (target == null) { cache.SqlTable.Log.add(AutoCSer.Log.LogType.Debug | AutoCSer.Log.LogType.Info, typeof(valueType).FullName + " 没有找到缓存目标对象 " + key.ToString()); } else { LadyOrderArray <valueType> array = getMember(target); if (array == null) { cache.SqlTable.Log.add(AutoCSer.Log.LogType.Fatal, typeof(valueType).FullName + " 缓存同步错误"); } else { array.Update(cacheValue); } } } else { onInserted(cacheValue, key); onDeleted(cacheValue, oldKey); } }
/// <summary> /// 更新数据 /// </summary> /// <param name="cacheValue"></param> /// <param name="value">更新后的数据</param> /// <param name="oldValue">更新前的数据</param> /// <param name="memberMap"></param> protected void onUpdated(valueType cacheValue, valueType value, valueType oldValue, MemberMap <modelType> memberMap) { keyType key = getKey(value), oldKey = getKey(oldValue); int index = getIndex(value), oldIndex = getIndex(oldValue); if (key.Equals(oldKey)) { if (index != oldIndex) { targetType target = getValue(key); if (target == null) { cache.SqlTable.Log.add(AutoCSer.Log.LogType.Debug | AutoCSer.Log.LogType.Info, typeof(valueType).FullName + " 没有找到缓存目标对象 " + key.ToString()); } else { LadyOrderArray <valueType>[] arrays = getMember(target); if (arrays != null) { LadyOrderArray <valueType> array = arrays[index]; if (array == null) { arrays[index] = array = new LadyOrderArray <valueType>(); } array.Insert(cacheValue); if ((array = arrays[oldIndex]) != null) { array.Delete(cacheValue); return; } } cache.SqlTable.Log.add(AutoCSer.Log.LogType.Fatal, typeof(valueType).FullName + " 缓存同步错误"); } } } else { onInserted(cacheValue, key, index); onDeleted(cacheValue, oldKey, getIndex(oldValue)); } }
/// <summary> /// 删除数据 /// </summary> /// <param name="value">被删除的数据</param> /// <param name="key">被删除数据的关键字</param> protected void onDeleted(valueType value, keyType key) { targetType target = getValue(key); if (target == null) { cache.SqlTable.Log.add(AutoCSer.Log.LogType.Debug | AutoCSer.Log.LogType.Info, typeof(valueType).FullName + " 没有找到缓存目标对象 " + key.ToString()); } else { LadyOrderArray <valueType> array = getMember(target); if (array == null) { cache.SqlTable.Log.add(AutoCSer.Log.LogType.Fatal, typeof(valueType).FullName + " 缓存同步错误"); } else { array.Delete(value); } } }