System.Data.XmlSchemaWriter.AddUniqueConstraints C# (CSharp) Méthode

AddUniqueConstraints() private méthode

private AddUniqueConstraints ( UniqueConstraint uniq, ArrayList names ) : void
uniq UniqueConstraint
names System.Collections.ArrayList
Résultat void
		private void AddUniqueConstraints (UniqueConstraint uniq,
			ArrayList names)
		{
			// if column of the constraint is hidden do not write the constraint.
			foreach (DataColumn column in uniq.Columns)
				if (column.ColumnMapping == MappingType.Hidden)
					return; // do nothing

			w.WriteStartElement ("xs", "unique", xmlnsxs);
			// if constaraint name do not exist in the hashtable we can use it.
			string name;
			if (!names.Contains (uniq.ConstraintName)) {
				name = XmlHelper.Encode (uniq.ConstraintName);
				w.WriteAttributeString ("name", name);
			}
			// otherwise generate new constraint name for the
			// XmlSchemaUnique element.
			else {
				name = XmlHelper.Encode (uniq.Table.TableName) + "_" + XmlHelper.Encode (uniq.ConstraintName);
				w.WriteAttributeString ("name", name);
				w.WriteAttributeString (
					XmlConstants.MsdataPrefix,
					XmlConstants.ConstraintName,
					XmlConstants.MsdataNamespace,
					XmlHelper.Encode (uniq.ConstraintName));
			}
			names.Add (name);

			if (uniq.IsPrimaryKey) {
				w.WriteAttributeString (
					XmlConstants.MsdataPrefix,
					XmlConstants.PrimaryKey,
					XmlConstants.MsdataNamespace,
					"true");
			}

			AddExtendedPropertyAttributes (uniq.ExtendedProperties);

			w.WriteStartElement ("xs", "selector",
				xmlnsxs);
			w.WriteAttributeString ("xpath", ".//" +
				ConstraintPrefix + XmlHelper.Encode (uniq.Table.TableName));
			w.WriteEndElement (); // selector
			foreach (DataColumn c in uniq.Columns) {
				w.WriteStartElement ("xs", "field",
					xmlnsxs);
				w.WriteStartAttribute ("xpath", String.Empty);
				if (c.ColumnMapping == MappingType.Attribute)
					w.WriteString ("@");
				w.WriteString (ConstraintPrefix);
				w.WriteString (XmlHelper.Encode (c.ColumnName));
				w.WriteEndAttribute (); // xpath
				w.WriteEndElement (); // field
			}

			w.WriteEndElement (); // unique
		}