Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans un schéma XSD (Xml Schema Definition Language), l’élément unique spécifie la contrainte d’unicité sur un élément ou un attribut. Dans le processus de traduction d’un schéma XML vers un schéma relationnel, la contrainte unique spécifiée sur un élément ou un attribut du schéma XML est convertie en une contrainte unique dans le DataTable du DataSet correspondant qui est généré.
Le tableau suivant présente les msdata attributs que vous pouvez spécifier dans l’élément unique .
| Nom de l’attribut | Descriptif |
|---|---|
| msdata :ConstraintName | Si cet attribut est spécifié, sa valeur est utilisée comme nom de contrainte. Sinon, l’attribut name fournit la valeur du nom de la contrainte. |
| msdata :PrimaryKey | Si PrimaryKey="true" est présent dans l’élément unique, une contrainte unique est créée avec la propriété IsPrimaryKey définie sur vrai. |
L’exemple suivant montre un schéma XML qui utilise l’élément unique pour spécifier une contrainte d’unicité.
<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>
L’élément unique du schéma spécifie que pour tous les Customers éléments d’une instance de document, la valeur de l’élément CustomerID enfant doit être unique. Lors de la création du DataSet, le processus de mappage lit ce schéma et génère le tableau suivant :
Customers (CustomerID, CompanyName, Phone)
Le processus de mappage crée également une contrainte unique sur la CustomerID colonne, comme indiqué dans le DataSet suivant. (Par souci de simplicité, seules les propriétés pertinentes sont affichées.)
DataSetName: MyDataSet
TableName: Customers
ColumnName: CustomerID
AllowDBNull: True
Unique: True
ConstraintName: UcustID Type: UniqueConstraint
Table: Customers
Columns: CustomerID
IsPrimaryKey: False
Dans ce DataSet qui est généré, la IsPrimaryKey propriété est définie False pour la contrainte unique. La unique propriété de la colonne indique que les CustomerID valeurs de colonne doivent être uniques (mais elles peuvent être une référence Null, telle que spécifiée par la AllowDBNull propriété de la colonne).
Si vous modifiez le schéma et définissez la valeur d’attribut facultative msdata:PrimaryKey sur True, la contrainte unique est créée sur la table. La AllowDBNull propriété de colonne a la valeur False et la IsPrimaryKey propriété de la contrainte définie sur True, ce qui rend la CustomerID colonne une colonne clé primaire.
Vous pouvez spécifier une contrainte unique sur une combinaison d’éléments ou d’attributs dans le schéma XML. L’exemple suivant montre comment spécifier qu’une combinaison de CustomerID valeurs CompanyName doit être unique pour toutes les Customers instances, en ajoutant un autre élément xs :field dans le schéma.
<xs:unique
msdata:ConstraintName="SomeName"
name="UniqueCustIDConstr" >
<xs:selector xpath=".//Customers" />
<xs:field xpath="CustomerID" />
<xs:field xpath="CompanyName" />
</xs:unique>
Il s’agit de la contrainte créée dans le DataSet résultant.
ConstraintName: SomeName
Table: Customers
Columns: CustomerID CompanyName
IsPrimaryKey: False