///// <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); }
/// <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)); }
// TODO: mb throw not supported exception? void IEnumerator.Reset() { _exceptionHandler = DefaultExceptionHandler; _status = RoutineStatus.NotStarted; _routine = null; _exception = null; _callback = null; }
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); }
private void SetupCompleted() { if (_status == RoutineStatus.Canceled) { throw new InvalidOperationException("Routine was canceled"); } _status = RoutineStatus.Completed; _update?.Invoke(); _callback?.Invoke(); }
public void Cancel() { if (_status == RoutineStatus.Canceled || _status == RoutineStatus.Completed || _status == RoutineStatus.Error) { return; } _status = RoutineStatus.Canceled; OnCancel(); _update?.Invoke(); }
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(); }
/// <summary> /// 构造器 /// </summary> public Record() { this.RoutineStatus = RoutineStatus.DEFAULT; }
/// <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)); }
/// <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)); }
public ConnectionError(string _error, RoutineStatus _flag) { flag = _flag; error = _error; //Debug.Log(server_url); }