private UniqueConstraint FindConstraint (string name, XmlSchemaElement element)
{
// Copied from XmlSchemaMapper.cs
// find the element in the constraint collection.
foreach (XmlSchemaIdentityConstraint c in element.Constraints) {
if (c is XmlSchemaKeyref)
continue;
if (c.Name == name) {
string tableName = GetSelectorTarget (c.Selector.XPath);
// find the table in the dataset.
DataTable dt = dataset.Tables [tableName];
string constraintName = c.Name;
// find if there is an attribute with the constraint name
// if not use the XmlSchemaUnique name.
if (c.UnhandledAttributes != null)
foreach (XmlAttribute attr in c.UnhandledAttributes)
if (attr.LocalName == "ConstraintName" && attr.NamespaceURI == XmlConstants.MsdataNamespace)
constraintName = attr.Value;
return (UniqueConstraint) dt.Constraints [constraintName];
}
}
throw new DataException ("Target identity constraint was not found: " + name);
}