コード例 #1
0
        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()");
            }
        }