/// <summary> /// 得到数据源查询条件 /// </summary> /// <param name="syncTableFilter">同步表的过滤条件</param> /// <returns>查询条件sql</returns> private string GetSqlStr(SyncTableFilter syncTableFilter) { string sqlStr = "SELECT * FROM {0} "; sqlStr = string.Format(sqlStr, syncTableFilter.TableViewName); if (!syncTableFilter.ForceReLoad && !string.IsNullOrEmpty(syncTableFilter.Condition)) { sqlStr = string.Format("{0} WHERE {1}", sqlStr, syncTableFilter.Condition); } return(sqlStr); }
/// <summary> /// 执行查询 /// </summary> /// <param name="requestEntity"></param> /// <param name="responseEntity"></param> protected override void DoExecute(RequestEntity requestEntity, ResponseEntity responseEntity) { IDictionary <string, string> paraDict = requestEntity.Parameters; SyncTableFilter filter = ServiceUtility.ConvertToFilterFromDict <SyncTableFilter>(paraDict); string errorInfo; bool success = Singleton <SyncSqlDAL> .Instance.SyncTable(filter, out errorInfo); ResponseResult result = new ResponseResult(); if (success) { responseEntity.ResponseStatus = (int)EnumResponseState.Success; } else { responseEntity.ResponseMessage = errorInfo; responseEntity.ResponseStatus = (int)EnumResponseState.Others; } responseEntity.Results = result; }
/// <summary> /// 同步数据 /// </summary> /// <param name="syncTableFilter">同步过滤条件</param> /// <param name="errorInfo">出错信息</param> /// <returns>是否同步成功</returns> public bool SyncTable(SyncTableFilter syncTableFilter, out string errorInfo) { string sqlStr = GetSqlStr(syncTableFilter); errorInfo = string.Empty; Type type = GetMonogEntitys(syncTableFilter.DestinationName); if (type == null) { errorInfo = "未找到目标表的配置"; return(false); } SqlDataReader dataReader = Singleton <SyncDal> .Instance.GetDataReader(sqlStr, 120); if (dataReader == null || !dataReader.HasRows) { errorInfo = "未找到需要同步的数据"; return(false); } if (syncTableFilter.ForceReLoad) { //先删除原有数据,再同步 Singleton <BaseMongo> .Instance.ClearDataFromCollection(syncTableFilter.DestinationName); } if (syncTableFilter.ForceReLoad || !Singleton <BaseMongo> .Instance.ExistsData(syncTableFilter.DestinationName)) { return(Singleton <SyncDal> .Instance.BatchInsertToMongoDB(syncTableFilter.DestinationName, dataReader, type, out errorInfo)); } else { return(Singleton <SyncDal> .Instance.SyncToMongoDB(syncTableFilter.PrimaryKeys, syncTableFilter.DestinationName, dataReader, out errorInfo)); } }