Partager via


Mapper les relations implicites entre les éléments de schéma imbriqués

Un schéma XSD (XML Schema Definition Language) peut avoir des types complexes imbriqués entre eux. Dans ce cas, le processus de mappage applique le mappage par défaut et crée les éléments suivants dans le DataSet.

  • Un tableau pour chacun des types complexes (parent et enfant).

  • Si aucune contrainte unique n’existe sur le parent, une colonne de clé primaire supplémentaire par définition de table nommée TableName_Id où TableName est le nom de la table parente.

  • Contrainte de clé primaire sur la table parente identifiant la colonne supplémentaire comme clé primaire (en définissant la IsPrimaryKey propriété sur True). La contrainte est nommée Constraint# où # est 1, 2, 3, et ainsi de suite. Par exemple, le nom par défaut de la première contrainte est Constraint1.

  • Une contrainte de clé étrangère sur la table enfant, qui identifie la colonne supplémentaire en tant que clé étrangère faisant référence à la clé primaire de la table parente. La contrainte est nommée ParentTable_ChildTableParentTable est le nom de la table parente et ChildTable est le nom de la table enfant.

  • Une relation de données entre les tables parente et enfant.

L’exemple suivant montre un schéma où OrderDetail est un élément enfant de 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="Order">
         <xs:complexType>
          <xs:sequence>
            <xs:element name="OrderNumber" type="xs:string" />
            <xs:element name="EmpNumber" type="xs:string" />
            <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:sequence>
         </xs:complexType>
       </xs:element>
     </xs:choice>
   </xs:complexType>
  </xs:element>
</xs:schema>

Le processus de mappage de schéma XML crée les éléments suivants dans le DataSet :

  • Une table Order et OrderDetail.

    Order(OrderNumber, EmpNumber, Order_Id)
    OrderDetail(OrderNo, ItemNo, Order_Id)
    
  • Contrainte unique de la table Order. Notez que la propriété IsPrimaryKey est définie sur la valeur True.

    ConstraintName: Constraint1
    Type: UniqueConstraint
    Table: Order
    Columns: Order_Id
    IsPrimaryKey: True
    
  • Contrainte de clé étrangère sur la table OrderDetail.

    ConstraintName: Order_OrderDetail
    Type: ForeignKeyConstraint
    Table: OrderDetail
    Columns: Order_Id
    RelatedTable: Order
    RelatedColumns: Order_Id
    
  • Relation entre les tables Order et OrderDetail. La propriété Nested de cette relation est définie True car les éléments Order et OrderDetail sont imbriqués dans le schéma.

    ParentTable: Order
    ParentColumns: Order_Id
    ChildTable: OrderDetail
    ChildColumns: Order_Id
    ParentKeyConstraint: Constraint1
    ChildKeyConstraint: Order_OrderDetail
    RelationName: Order_OrderDetail
    Nested: True
    

Voir aussi