Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В схеме на языке определения XML Schema (XSD) элемент unique регламентирует ограничение уникальности для элемента или атрибута. При преобразовке XML-схемы в реляционную схему уникальное ограничение, указанное в элементе или атрибуте в схеме XML, сопоставляется с уникальным ограничением в DataTable соответствующем DataSet созданном объекте.
В следующей таблице описаны msdata атрибуты, которые можно указать в элементе unique .
| Имя атрибута | Описание |
|---|---|
| msdata:ConstraintName | Если этот атрибут указан, его значение используется в качестве имени ограничения.
name В противном случае атрибут предоставляет значение имени ограничения. |
| msdata:PrimaryKey | Если PrimaryKey="true" присутствует в элементе unique, создаётся уникальное ограничение с установленным для свойства IsPrimaryKey значением true. |
В следующем примере показана XML-схема, использующая unique элемент для указания ограничения уникальности.
<xs:schema id="SampleDataSet"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="Customers">
<xs:complexType>
<xs:sequence>
<xs:element name="CustomerID" type="xs:integer"
minOccurs="0"/>
<xs:element name="CompanyName" type="xs:string"
minOccurs="0"/>
<xs:element name="Phone" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SampleDataSet" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="Customers" />
</xs:choice>
</xs:complexType>
<xs:unique msdata:ConstraintName="UCustID" name="UniqueCustIDConstr" > <xs:selector xpath=".//Customers" /> <xs:field xpath="CustomerID" /> </xs:unique>
</xs:element>
</xs:schema>
Элемент unique в схеме указывает, что для всех Customers элементов в экземпляре документа значение дочернего CustomerID элемента должно быть уникальным. При создании набора данных процесс сопоставления считывает эту схему и создает следующую таблицу:
Customers (CustomerID, CompanyName, Phone)
Процесс сопоставления также создает уникальное ограничение для столбцаCustomerID, как показано в следующем наборе данных. (Для простоты отображаются только соответствующие свойства.)
DataSetName: MyDataSet
TableName: Customers
ColumnName: CustomerID
AllowDBNull: True
Unique: True
ConstraintName: UcustID Type: UniqueConstraint
Table: Customers
Columns: CustomerID
IsPrimaryKey: False
В созданном DataSetIsPrimaryKey свойстве задано False уникальное ограничение. Свойство unique столбца указывает, что CustomerID значения столбца должны быть уникальными (но они могут быть пустой ссылкой, как указано AllowDBNull свойством столбца).
Если изменить схему и задать значение msdata:PrimaryKey необязательного атрибута, в таблице создается уникальное ограничение. Свойство AllowDBNull столбца имеет значение False, а IsPrimaryKey свойство ограничения имеет значение True, что делает CustomerID столбец первичным ключевым столбцом.
Можно указать уникальное ограничение для сочетания элементов или атрибутов в схеме XML. В следующем примере показано, как указать, что сочетание CustomerID и CompanyName значения должны быть уникальными для всех Customers в любом экземпляре, добавив другой элемент xs:field в схему.
<xs:unique
msdata:ConstraintName="SomeName"
name="UniqueCustIDConstr" >
<xs:selector xpath=".//Customers" />
<xs:field xpath="CustomerID" />
<xs:field xpath="CompanyName" />
</xs:unique>
Это ограничение, созданное в результирующем наборе данных.
ConstraintName: SomeName
Table: Customers
Columns: CustomerID CompanyName
IsPrimaryKey: False