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.
L’élément keyref vous permet d’établir des liens entre les éléments d’un document. Il s’agit d’une relation de clé étrangère dans une base de données relationnelle. Si un schéma spécifie l’élément keyref , l’élément est converti pendant le processus de mappage de schéma en contrainte de clé étrangère correspondante sur les colonnes des tables du DataSet. Par défaut, l’élément keyref génère également une relation, avec les propriétés ParentTable, ChildTable, ParentColumn et ChildColumn spécifiées sur la relation.
Le tableau suivant présente les msdata attributs que vous pouvez spécifier dans l’élément keyref .
| Nom de l’attribut | Descriptif |
|---|---|
| msdata :ConstraintOnly | Si ConstraintOnly="true » est spécifié sur l’élément keyref du schéma, une contrainte est créée, mais aucune relation n’est créée. Si cet attribut n’est pas spécifié (ou est défini sur False), la contrainte et la relation sont créées dans le DataSet. |
| msdata :ConstraintName | Si l’attribut ConstraintName est spécifié, sa valeur est utilisée comme nom de la contrainte. Sinon, l’attribut name de l’élément keyref dans le schéma fournit le nom de contrainte dans le DataSet. |
| msdata :UpdateRule | Si l’attribut UpdateRule est spécifié dans l’élément keyref du schéma, sa valeur est affectée à la UpdateRule propriété de contrainte dans dataSet. Sinon, la UpdateRule propriété est définie sur Cascade. |
| msdata :DeleteRule | Si l’attribut DeleteRule est spécifié dans l’élément keyref du schéma, sa valeur est affectée à la DeleteRule propriété de contrainte dans dataSet. Sinon, la DeleteRule propriété est définie sur Cascade. |
| msdata :AcceptRejectRule | Si l’attribut AcceptRejectRule est spécifié dans l’élément keyref du schéma, sa valeur est affectée à la AcceptRejectRule propriété de contrainte dans dataSet. Sinon, la propriété a la AcceptRejectRule valeur None. |
L’exemple suivant contient un schéma qui spécifie les relations entre l’élément key enfant de l’élément keyref et l’élément OrderNumber enfant de l’élément Order.
Dans l’exemple, l’élément OrderNumber enfant de l’élément OrderDetail fait référence à l’élément OrderNo enfant clé de l’élément Order .
<xs:schema id="MyDataSet" xmlns=""
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="MyDataSet" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="OrderDetail">
<xs:complexType>
<xs:sequence>
<xs:element name="OrderNo" type="xs:integer" />
<xs:element name="ItemNo" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Order">
<xs:complexType>
<xs:sequence>
<xs:element name="OrderNumber" type="xs:integer" />
<xs:element name="EmpNumber" type="xs:integer" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:key name="OrderNumberKey" >
<xs:selector xpath=".//Order" />
<xs:field xpath="OrderNumber" />
</xs:key>
<xs:keyref name="OrderNoRef" refer="OrderNumberKey">
<xs:selector xpath=".//OrderDetail" />
<xs:field xpath="OrderNo" />
</xs:keyref>
</xs:element>
</xs:schema>
Le processus de mappage de schéma XSD (XML Schema Definition Language) produit les éléments suivants DataSet avec deux tables :
OrderDetail(OrderNo, ItemNo) and
Order(OrderNumber, EmpNumber)
En outre, le DataSet définit les contraintes suivantes :
Contrainte unique de la table
Order.Table: Order Columns: OrderNumber ConstraintName: OrderNumberKey Type: UniqueConstraint IsPrimaryKey: FalseRelation entre les tables
OrderetOrderDetail. La propriétéNestedest définie surFalseparce que les deux éléments ne sont pas imbriqués dans le schéma.ParentTable: Order ParentColumns: OrderNumber ChildTable: OrderDetail ChildColumns: OrderNo ParentKeyConstraint: OrderNumberKey ChildKeyConstraint: OrderNoRef RelationName: OrderNoRef Nested: FalseContrainte de clé étrangère sur la table
OrderDetail.ConstraintName: OrderNoRef Type: ForeignKeyConstraint Table: OrderDetail Columns: OrderNo RelatedTable: Order RelatedColumns: OrderNumber