System.Data.DataTable.EnableConstraints C# (CSharp) Method

EnableConstraints() private method

private EnableConstraints ( ) : void
return void
        internal void EnableConstraints()
        {
            bool errors = false;
            foreach (Constraint constr in Constraints)
            {
                if (constr is UniqueConstraint)
                {
                    errors |= constr.IsConstraintViolated();
                }
            }

            foreach (DataColumn column in Columns)
            {
                if (!column.AllowDBNull)
                {
                    errors |= column.IsNotAllowDBNullViolated();
                }
                if (column.MaxLength >= 0)
                {
                    errors |= column.IsMaxLengthViolated();
                }
            }

            if (errors)
            {
                EnforceConstraints = false;
                throw ExceptionBuilder.EnforceConstraint();
            }
        }

Usage Example

Example #1
0
        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 (this.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 != this.dataSet.namespaceURI)
                {
                    _IgnoreNSforTableLookup = true;
                }
            }
            else   // this is dt.Merge
            {
                if (this.dataTable.DataSet == null || src.DataSet == null ||
                    src.DataSet.namespaceURI != this.dataTable.DataSet.namespaceURI)
                {
                    _IgnoreNSforTableLookup = true;
                }
            }

            MergeTableData(src);

            DataTable dt = dataTable;

            if (dt == null && dataSet != null)
            {
                if (_IgnoreNSforTableLookup)
                {
                    dt = dataSet.Tables[src.TableName];
                }
                else
                {
                    dt = 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;
                }
            }
        }
DataTable