System.Data.ForeignKeyConstraint.Clone C# (CSharp) Метод

Clone() приватный Метод

private Clone ( DataSet destination, bool ignorNSforTableLookup ) : Constraint
destination DataSet
ignorNSforTableLookup bool
Результат Constraint
        internal override Constraint Clone(DataSet destination, bool ignorNSforTableLookup)
        {
            int iDest;
            if (ignorNSforTableLookup)
            {
                iDest = destination.Tables.IndexOf(Table.TableName);
            }
            else
            {
                iDest = destination.Tables.IndexOf(Table.TableName, Table.Namespace, false); // pass false for last param 
                // to be backward compatable, otherwise meay cause new exception
            }

            if (iDest < 0)
            {
                return null;
            }

            DataTable table = destination.Tables[iDest];
            if (ignorNSforTableLookup)
            {
                iDest = destination.Tables.IndexOf(RelatedTable.TableName);
            }
            else
            {
                iDest = destination.Tables.IndexOf(RelatedTable.TableName, RelatedTable.Namespace, false);// pass false for last param 
            }
            if (iDest < 0)
            {
                return null;
            }

            DataTable relatedTable = destination.Tables[iDest];

            int keys = Columns.Length;
            DataColumn[] columns = new DataColumn[keys];
            DataColumn[] relatedColumns = new DataColumn[keys];

            for (int i = 0; i < keys; i++)
            {
                DataColumn src = Columns[i];
                iDest = table.Columns.IndexOf(src.ColumnName);
                if (iDest < 0)
                {
                    return null;
                }
                columns[i] = table.Columns[iDest];

                src = RelatedColumnsReference[i];
                iDest = relatedTable.Columns.IndexOf(src.ColumnName);
                if (iDest < 0)
                {
                    return null;
                }
                relatedColumns[i] = relatedTable.Columns[iDest];
            }
            ForeignKeyConstraint clone = new ForeignKeyConstraint(ConstraintName, relatedColumns, columns);
            clone.UpdateRule = UpdateRule;
            clone.DeleteRule = DeleteRule;
            clone.AcceptRejectRule = AcceptRejectRule;

            // ...Extended Properties
            foreach (object key in ExtendedProperties.Keys)
            {
                clone.ExtendedProperties[key] = ExtendedProperties[key];
            }

            return clone;
        }

Same methods

ForeignKeyConstraint::Clone ( DataSet destination ) : Constraint
ForeignKeyConstraint::Clone ( DataTable destination ) : ForeignKeyConstraint