/// <summary> /// 登錄到記憶體中 /// </summary> /// <param name="entityTable"></param> public void Regist(EntityTable entityTable, OPStatus opStatus) { //if (entityTable == null) return; if (entityTable == null || (opStatus == OPStatus.Steady && entityTable.HasCollectionChangedEventSubscriber())) { return; } if (opStatus.IsPassSchema()) { entityTable.GetAttributesEntity().Status = opStatus; updatingTables[GenKey(entityTable, true)] = entityTable; return; } //if(HasCollectionChangedEventSubscriber()) var attris = entityTable.GetAttributesEntity(); attris.Status = opStatus; entityTable.CollectionChanged -= OnTableCollectionChanged; entityTable.CollectionChanged += OnTableCollectionChanged; //Comment out: 每次因EntityTable的rows可能數量不同,有的是部分 //if (!attris.IsPartial&&updatingTables.ContainsKey(GenKey(entityTable))) // return; Action <EntityRow> action = delegate(EntityRow row) { var attribute = row.GetAttributesEntity(); //attribute.Status = opStatus; row.PropertyChanged -= OnRowChanged; row.PropertyChanged += OnRowChanged; }; EntityTable registedTable = TakeRegistedTable(entityTable); entityTable.Rows.ForEach(row => { action(row); DoRegist(registedTable, row, opStatus); }); }
private void DoRegist(EntityTable registedTable, EntityRow row, OPStatus opStatus) { IEntityRowAttributes rowAttributes = row.GetAttributesEntity(); bool isExist = registedTable.Rows.Contains(row); bool inTransaction = (State == DataTransactionState.Begin); switch (opStatus) { case OPStatus.Delete: if (isExist) { registedTable.Rows.Remove(row); } if (rowAttributes.Status == OPStatus.Add) { UnregistRowTransaction(row); } else { RegistRowTransaction(row, true); rowAttributes.Status = opStatus; } break; case OPStatus.Add: if (!isExist) { registedTable.Rows.Add(row); } RegistRowTransaction(row, false); rowAttributes.Status = opStatus; break; case OPStatus.Update: if (rowAttributes.Status != OPStatus.Add && rowAttributes.Status != OPStatus.Delete) { rowAttributes.Status = opStatus; //100/11/30 by Feng,避免已經BeginUpdate後才又有Table被查詢regist RegistRowTransaction(row, true); } break; case OPStatus.Steady: if (!isExist) { rowAttributes.Status = opStatus; registedTable.Rows.Add(row); RegistRowTransaction(row, true); } break; default: throw new Exception("EntityTableTransaction.Regist()"); } }
private Task UpdateTriggerCode(int logId, OPStatus triggerCode, string triggerMessage) { _taskExecutor.Execute(async(state) => { AixScheduleTaskLog log = new AixScheduleTaskLog { Id = logId, TriggerCode = (int)triggerCode, TriggerMessage = StringUtils.SubString(triggerMessage, _options.LogResultMessageMaxLength > 0 ? _options.LogResultMessageMaxLength : 500), ModifyTime = DateTime.Now }; await _aixScheduleTaskLogRepository.UpdateAsync(log); }, null); return(Task.CompletedTask); }
public void Reregist(EntityTable entityTable, OPStatus opStatus) { Unregist(entityTable, false); Regist(entityTable, opStatus); }
public void Regist(EntityTable srcTable, EntityRow row, OPStatus opStatus) { EntityTable registedTable = TakeRegistedTable(srcTable); DoRegist(registedTable, row, opStatus); }
/// <summary> /// 當屬於Table的OP操作, it>OPStatus.Add的動作只傳遞Schem不傳table內容 /// </summary> static public bool IsPassSchema(this OPStatus it) { return(it > OPStatus.Add); }