コード例 #1
0
        ///// <summary>
        ///// 获取Get查询语句并根据键值对进行转换
        ///// </summary>
        ///// <param name="dict">字典键值对对象,可为空</param>
        ///// <returns>返回查询语句</returns>
        //public string GetQueryString(Dictionary<string, object> dict)
        //{
        //    //return this.ConvertSqlStringByKeyValue(this.GetSql(this.MapperName + ".Get"), dict);
        //    return this.GetSqlStringBySqlMapKey("Get", dict);
        //}

        /// <summary>
        /// 获取数据操纵(Insert、Update或Delete)语句,并根据对象属性进行转换
        /// </summary>
        /// <typeparam name="T">用作转换参考的实体类</typeparam>
        /// <param name="obj">实体类对象,可为空</param>
        /// <param name="status">表示新增、更新或删除的枚举对象</param>
        /// <returns>返回新增、更新或删除语句</returns>
        public string GetDataManageString <T>(T obj, RoutineStatus status)
        {
            if (status == RoutineStatus.REGULAR)
            {
                return(string.Empty);
            }

            string keyTail = string.Empty;

            switch ((int)status)
            {
            case (int)RoutineStatus.ADD:
                //keyTail = ".Insert";
                keyTail = "Insert";
                break;

            case (int)RoutineStatus.EDIT:
                //keyTail = ".Update";
                keyTail = "Update";
                break;

            case (int)RoutineStatus.DELETE:
                //keyTail = ".Delete";
                keyTail = "Delete";
                break;
            }
            //string sqlString = this.ConvertSqlStringByObject<T>(this.GetSql(this.MapperName + keyTail), obj);
            string sqlString = this.GetSqlStringBySqlMapKey(keyTail, obj);

            return(sqlString);
        }
コード例 #2
0
ファイル: Record.cs プロジェクト: AlphaNugie/CommonLib
 /// <summary>
 /// 通知属性改变
 /// </summary>
 /// <param name="propertyName"></param>
 protected void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
 {
     if (this.RoutineStatus == RoutineStatus.DEFAULT || this.RoutineStatus == RoutineStatus.REGULAR || this.RoutineStatus == RoutineStatus.EDIT)
     {
         this.RoutineStatus = RoutineStatus.EDIT;
     }
     PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
 }
コード例 #3
0
ファイル: Routine.cs プロジェクト: Hengle/omega-package
 // TODO: mb throw not supported exception?
 void IEnumerator.Reset()
 {
     _exceptionHandler = DefaultExceptionHandler;
     _status           = RoutineStatus.NotStarted;
     _routine          = null;
     _exception        = null;
     _callback         = null;
 }
コード例 #4
0
ファイル: Routine.cs プロジェクト: Hengle/omega-package
        bool IEnumerator.MoveNext()
        {
            //todo: optimize condition. mb something typo `_status < 16`
            // Если рутина содержит ошибку, то последующие ее выполнение может быть не корректным.
            if (IsError || IsCanceled || IsComplete)
            {
                return(false);
            }

            // Если рутина еще не создана - создаем
            if (_routine == null)
            {
                _routine = RoutineUpdate();
                if (_routine == null)
                {
                    SetupCompleted();
                    return(false);
                }

                if (_status != RoutineStatus.ForcedProcessing)
                {
                    _status = RoutineStatus.Processing;
                    _update?.Invoke();
                }
            }

            bool moveNextResult = false;

            // Для поддержки правильного состояния рутины изолируем исполнение пользовательского кода
            try
            {
                moveNextResult = DeepMoveNext(_routine);
            }
            catch (Exception e)
            {
                // В случае если пользовательский код вызвал исключение, то обновляем состояние рутины
                // и обрабатываем это исключение
                _exception = e;
                _status    = RoutineStatus.Error;

                _exceptionHandler.Invoke(e, this);
                _update?.Invoke();

                return(false);
            }

            // Если больше не можем двигаться дольше то помечаем рутину как завершенную
            if (moveNextResult)
            {
                _update?.Invoke();
            }
            else
            {
                SetupCompleted();
            }

            return(moveNextResult);
        }
コード例 #5
0
ファイル: Routine.cs プロジェクト: Hengle/omega-package
        private void SetupCompleted()
        {
            if (_status == RoutineStatus.Canceled)
            {
                throw new InvalidOperationException("Routine was canceled");
            }

            _status = RoutineStatus.Completed;
            _update?.Invoke();
            _callback?.Invoke();
        }
コード例 #6
0
ファイル: Routine.cs プロジェクト: Hengle/omega-package
        public void Cancel()
        {
            if (_status == RoutineStatus.Canceled || _status == RoutineStatus.Completed ||
                _status == RoutineStatus.Error)
            {
                return;
            }

            _status = RoutineStatus.Canceled;

            OnCancel();

            _update?.Invoke();
        }
コード例 #7
0
ファイル: Routine.cs プロジェクト: Hengle/omega-package
        internal void OnForcedCompleteInternal()
        {
            if (_status == RoutineStatus.Completed || _status == RoutineStatus.ForcedProcessing)
            {
                return;
            }

            if (_status is RoutineStatus.Error)
            {
                throw new InvalidOperationException(
                          "Impossible to force complete a routine in which there is an error");
            }

            _status = RoutineStatus.ForcedProcessing;

            OnForcedComplete();

            _update?.Invoke();
        }
コード例 #8
0
ファイル: Record.cs プロジェクト: AlphaNugie/CommonLib
 /// <summary>
 /// 构造器
 /// </summary>
 public Record()
 {
     this.RoutineStatus = RoutineStatus.DEFAULT;
 }
コード例 #9
0
        /// <summary>
        /// 新增、编辑或删除记录
        /// </summary>
        /// <param name="record">实体类对象</param>
        /// <param name="status">新增、编辑或删除状态</param>
        /// <returns>返回影响记录条数</returns>
        public int EditRecord(T record, RoutineStatus status)
        {
            string sqlString = this.batisLike.GetDataManageString(record, status);

            return(this.provider.ExecuteSql(sqlString));
        }
コード例 #10
0
 /// <summary>
 /// 批量新增、编辑或删除记录
 /// </summary>
 /// <param name="records">包含实体类对象的List</param>
 /// <param name="status">新增、编辑或删除状态</param>
 /// <returns>假如执行成功,返回true,否则返回false</returns>
 public bool EditRecords(List <T> records, RoutineStatus status)
 {
     string[] sqlStrings = records.Select(record => this.batisLike.GetDataManageString(record, status)).ToArray();
     return(this.provider.ExecuteSqlTrans(sqlStrings));
 }
コード例 #11
0
ファイル: GetRoutine.cs プロジェクト: TAPeri/WordsMatter
 public ConnectionError(string _error, RoutineStatus _flag)
 {
     flag  = _flag;
     error = _error;
     //Debug.Log(server_url);
 }