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
}
if (iDest < 0)
return null;
DataTable table = destination.Tables[iDest];
int keys = ColumnsReference.Length;
DataColumn[] columns = new DataColumn[keys];
for (int i = 0; i < keys; i++)
{
DataColumn src = ColumnsReference[i];
iDest = table.Columns.IndexOf(src.ColumnName);
if (iDest < 0)
return null;
columns[i] = table.Columns[iDest];
}
UniqueConstraint clone = new UniqueConstraint(ConstraintName, columns);
// ...Extended Properties
foreach (object key in ExtendedProperties.Keys)
{
clone.ExtendedProperties[key] = ExtendedProperties[key];
}
return clone;
}