Partager via


Spécification de relations entre des éléments qui ne sont pas imbriqués

Lorsque des éléments ne sont pas imbriqués, aucune relation implicite n'est créée. Vous pouvez toutefois spécifier explicitement des relations entre des éléments qui ne sont pas imbriqués, à l'aide de l'annotation msdata:Relationship.

L'exemple suivant représente un schéma XML dans lequel l'annotation msdata:Relationship est spécifiée entre les éléments non imbriqués Order et OrderDetail. L'annotation msdata:Relationship est spécifiée en tant qu'élément enfant de l'élément Schema.

<xs:schema id="MyDataSet"  
             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:string" />
           <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:string" />
           <xs:element name="EmpNumber" type="xs:string" />
         </xs:sequence>
       </xs:complexType>
      </xs:element>
    </xs:choice>
  </xs:complexType>

  </xs:element>
   <xs:annotation>
     <xs:appinfo>
       <msdata:Relationship name="OrdOrdDetailRelation"
                            msdata:parent="Order" 
                            msdata:child="OrderDetail" 
                            msdata:parentkey="OrderNumber" 
                            msdata:childkey="OrderNo"/>
     </xs:appinfo>
  </xs:annotation>
</xs:schema>

Le processus de mappage du schéma en langage XSD (XML Schema Definition) crée un DataSet comprenant les tables Order et OrderDetail et une relation est spécifiée entre ces deux tables.

RelationName: OrdOrderDetailRelation
ParentTable: Order
ParentColumns: OrderNumber 
ChildTable: OrderDetail
ChildColumns: OrderNo 
Nested: False

Voir aussi

Génération des relations d'un DataSet à partir de XSD | Mappage de contraintes XSD à des contraintes de DataSet | Prise en charge des types de données entre des types XSD et des types .NET Framework