Beispiel #1
0
        /// <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;
        }
Beispiel #3
0
        /// <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));
            }
        }