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()"); } }