System.Data.Merger.MergeTable C# (CSharp) Method

MergeTable() private method

private MergeTable ( DataTable src ) : void
src DataTable
return void
        internal void MergeTable(DataTable src)
        {
            bool fEnforce = false;
            if (!_isStandAlonetable)
            {
                if (src.DataSet == _dataSet) return; //somebody is doing an 'automerge'
                fEnforce = _dataSet.EnforceConstraints;
                _dataSet.EnforceConstraints = false;
            }
            else
            {
                if (src == _dataTable) return; //somebody is doing an 'automerge'
                _dataTable.SuspendEnforceConstraints = true;
            }

            if (_dataSet != null)
            {
                // this is ds.Merge
                // if source does not have a DS, or if NS of both DS does not match, ignore the NS
                if (src.DataSet == null || src.DataSet._namespaceURI != _dataSet._namespaceURI)
                {
                    _IgnoreNSforTableLookup = true;
                }
            }
            else
            {
                // this is dt.Merge
                if (_dataTable.DataSet == null || src.DataSet == null || src.DataSet._namespaceURI != _dataTable.DataSet._namespaceURI)
                {
                    _IgnoreNSforTableLookup = true;
                }
            }

            MergeTableData(src);

            DataTable dt = _dataTable;
            if (dt == null && _dataSet != null)
            {
                dt = _IgnoreNSforTableLookup ?
                    _dataSet.Tables[src.TableName] :
                    _dataSet.Tables[src.TableName, src.Namespace];
            }

            if (dt != null)
            {
                dt.EvaluateExpressions();
            }

            if (!_isStandAlonetable)
            {
                _dataSet.EnforceConstraints = fEnforce;
            }
            else
            {
                _dataTable.SuspendEnforceConstraints = false;
                try
                {
                    if (_dataTable.EnforceConstraints)
                    {
                        _dataTable.EnableConstraints();
                    }
                }
                catch (ConstraintException)
                {
                    if (_dataTable.DataSet != null)
                    {
                        _dataTable.DataSet.EnforceConstraints = false;
                    }
                    throw;
                }
            }
        }

Same methods

Merger::MergeTable ( DataTable src, DataTable dst ) : void

Usage Example

Esempio n. 1
0
        public void Merge(DataTable table, bool preserveChanges, MissingSchemaAction missingSchemaAction)
        {
            IntPtr hscp;
            Bid.ScopeEnter(out hscp, "<ds.DataTable.Merge|API> %d#, table=%d, preserveChanges=%d{bool}, missingSchemaAction=%d{ds.MissingSchemaAction}\n", ObjectID, (table != null) ? table.ObjectID : 0, preserveChanges, (int)missingSchemaAction);
            try{
                if (table == null)
                    throw ExceptionBuilder.ArgumentNull("table");

                switch(missingSchemaAction) { // @perfnote: Enum.IsDefined
                case MissingSchemaAction.Add:
                case MissingSchemaAction.Ignore:
                case MissingSchemaAction.Error:
                case MissingSchemaAction.AddWithKey:
                    Merger merger = new Merger(this, preserveChanges, missingSchemaAction);
                    merger.MergeTable(table);
                    break;
                default:
                    throw Common.ADP.InvalidMissingSchemaAction(missingSchemaAction);
                }
            }
            finally{
                Bid.ScopeLeave(ref hscp);
            }
        }
All Usage Examples Of System.Data.Merger::MergeTable