//向DB中写入多条数据 internal static int BatchSaveItemsSql(int msgId, List <InnerCacheItem> cacheItemList, int dataVersion) { int count = 0; if (DataCacheConfig.IsPersistent) { try { List <bool> validList = new List <bool>(); List <byte[]> dataList = new List <byte[]>(); foreach (var cacheItem in cacheItemList) { validList.Add(cacheItem.Valid); dataList.Add(cacheItem.DataMessage); } count = DataDML.BatchSave(msgId, validList, dataList, dataVersion); LogSys.Log(LOG_TYPE.MONITOR, "BatchSaveItemsSql SUCCESS. MsgId:{0}, DataCount:{1}, DataVersion:{2}", msgId, cacheItemList.Count, dataVersion); } catch (Exception ex) { DBConn.Close(); LogSys.Log(LOG_TYPE.ERROR, "BatchSaveItemsSql ERROR. MsgId:{0}, Error:{1}\nStacktrace:{2}", msgId, ex.Message, ex.StackTrace); throw ex; } } else { count = cacheItemList.Count; } return(count); }
//向DB中写入一条数据 internal static int SingleSaveItem(int msgId, InnerCacheItem cacheItem, int dataVersion) { if (DataCacheConfig.IsPersistent) { try { DataDML.Save(msgId, cacheItem.Valid, dataVersion, cacheItem.DataMessage); } catch (Exception ex) { DBConn.Close(); LogSys.Log(LOG_TYPE.ERROR, "SingleSaveItem ERROR. MsgId:{0}, Error:{1}\nStacktrace:{2}", msgId, ex.Message, ex.StackTrace); throw ex; } } return(1); }
//向DB中写入多条数据 internal static int BatchSaveItemsProc(int msgId, List <InnerCacheItem> cacheItemList, int dataVersion) { if (DataCacheConfig.IsPersistent) { try { foreach (var cacheItem in cacheItemList) { DataDML.Save(msgId, cacheItem.Valid, dataVersion, cacheItem.DataMessage); } LogSys.Log(LOG_TYPE.MONITOR, "BatchSaveItemsProc SUCCESS. MsgId:{0}, DataCount:{1}, DataVersion:{2}", msgId, cacheItemList.Count, dataVersion); } catch (Exception ex) { DBConn.Close(); LogSys.Log(LOG_TYPE.ERROR, "BatchSaveItemsProc ERROR. MsgId:{0}, Error:{1}\nStacktrace:{2}", msgId, ex.Message, ex.StackTrace); throw ex; } } return(cacheItemList.Count); }
internal static void Load(Msg_LD_Load msg, MyAction <Msg_DL_LoadResult> callback) { Msg_DL_LoadResult ret = new Msg_DL_LoadResult(); ret.MsgId = msg.MsgId; ret.PrimaryKeys.AddRange(msg.PrimaryKeys); ret.SerialNo = msg.SerialNo;; ret.ErrorNo = Msg_DL_LoadResult.ErrorNoEnum.Success; if (DataCacheConfig.IsPersistent) { try { for (int i = 0; i < msg.LoadRequests.Count; ++i) { Msg_LD_SingleLoadRequest req = msg.LoadRequests[i]; switch (req.LoadType) { case Msg_LD_SingleLoadRequest.LoadTypeEnum.LoadAll: { int start = req.Start; int count = req.Count; List <GeneralRecordData> datas = DataDML.LoadAll(req.MsgId, start, count); foreach (GeneralRecordData data in datas) { Msg_DL_SingleRowResult result = new Msg_DL_SingleRowResult(); result.MsgId = req.MsgId; result.PrimaryKeys.AddRange(data.PrimaryKeys); result.ForeignKeys.AddRange(data.ForeignKeys); result.DataVersion = data.DataVersion; result.Data = data.Data; ret.Results.Add(result); } } break; case Msg_LD_SingleLoadRequest.LoadTypeEnum.LoadSingle: { GeneralRecordData data = DataDML.LoadSingle(req.MsgId, req.Keys); Msg_DL_SingleRowResult result = new Msg_DL_SingleRowResult(); result.MsgId = req.MsgId; if (data != null) { result.PrimaryKeys.AddRange(data.PrimaryKeys); result.ForeignKeys.AddRange(data.ForeignKeys); result.DataVersion = data.DataVersion; result.Data = data.Data; } else { result.PrimaryKeys.AddRange(msg.PrimaryKeys); result.ForeignKeys.Clear(); result.DataVersion = -1; result.Data = null; ret.ErrorNo = Msg_DL_LoadResult.ErrorNoEnum.NotFound; } ret.Results.Add(result); } break; case Msg_LD_SingleLoadRequest.LoadTypeEnum.LoadMulti: { List <GeneralRecordData> dataList = DataDML.LoadMulti(req.MsgId, req.Keys); foreach (GeneralRecordData data in dataList) { Msg_DL_SingleRowResult result = new Msg_DL_SingleRowResult(); result.MsgId = req.MsgId; result.PrimaryKeys.AddRange(data.PrimaryKeys); result.ForeignKeys.AddRange(data.ForeignKeys); result.DataVersion = data.DataVersion; result.Data = data.Data; ret.Results.Add(result); } } break; } } } catch (Exception ex) { ret.ErrorNo = Msg_DL_LoadResult.ErrorNoEnum.PostError; ret.ErrorInfo = ex.Message; LogSys.Log(LOG_TYPE.ERROR, ConsoleColor.Red, "Load data from mysql ERROR. MsgId:{0}, Key:{1}\nErrorMessage:{2}\nStackTrace:{3}", msg.MsgId, msg.PrimaryKeys, ex.Message, ex.StackTrace); } finally { DataCacheSystem.Instance.QueueAction(callback, ret); } } else { ret.ErrorNo = Msg_DL_LoadResult.ErrorNoEnum.NotFound; ret.ErrorInfo = string.Empty; DataCacheSystem.Instance.QueueAction(callback, ret); } }