Mapping di relazioni implicite tra elementi di schemi annidatiMap Implicit Relations Between Nested Schema Elements

È possibile che in uno schema XSD (XML Schema Definition Language) siano presenti tipi complessi annidati uno all'interno dell'altro.An XML Schema definition language (XSD) schema can have complex types nested inside one another. In questo caso, le impostazioni di mapping predefinite vengono applicate dal processo di mapping e nel tipo DataSet vengono creati i seguenti elementi:In this case, the mapping process applies default mapping and creates the following in the DataSet:

  • Una tabella per ogni tipo complesso (padre e figlio).One table for each of the complex types (parent and child).

  • Se è presente alcun vincolo univoco nell'elemento padre, una colonna primaria aggiuntiva chiave ogni definizione di tabella denominato TableNameID dove TableName è il nome della tabella padre.If no unique constraint exists on the parent, one additional primary key column per table definition named TableName_Id where TableName is the name of the parent table.

  • Un vincolo di chiave primaria nella tabella padre che identifica la colonna aggiuntiva come chiave primaria (impostando il IsPrimaryKey proprietà True).A primary key constraint on the parent table identifying the additional column as the primary key (by setting the IsPrimaryKey property to True). Il vincolo viene denominato Constraint# in # è 1, 2, 3 e così via.The constraint is named Constraint# where # is 1, 2, 3, and so on. Il nome predefinito del primo vincolo, ad esempio, è Constraint1.For example, the default name for the first constraint is Constraint1.

  • Un vincolo di chiave esterna nella tabella figlio che consenta di identificare la colonna aggiuntiva come chiave esterna contenente riferimenti alla chiave primaria della tabella padre.A foreign key constraint on the child table identifying the additional column as the foreign key referring to the primary key of the parent table. Il vincolo viene denominato ParentTable_ChildTable in ParentTable è il nome della tabella padre e ChildTable è il nome della tabella figlio.The constraint is named ParentTable_ChildTable where ParentTable is the name of the parent table and ChildTable is the name of the child table.

  • Una relazione di dati tra le tabelle padre e figlio.A data relation between the parent and child tables.

Nell'esempio seguente viene illustrato uno schema in cui OrderDetail è un elemento figlio di ordine.The following example shows a schema where OrderDetail is a child element of 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>  

Il processo di mapping di XML Schema vengono creati i seguenti nel DataSet:The XML Schema mapping process creates the following in the DataSet:

  • Un ordine e OrderDetail tabella.An Order and an OrderDetail table.

    Order(OrderNumber, EmpNumber, Order_Id)  
    OrderDetail(OrderNo, ItemNo, Order_Id)  
    
  • Un vincolo unique per la ordine tabella.A unique constraint on the Order table. Si noti che il IsPrimaryKey è impostata su True.Note that the IsPrimaryKey property is set to True.

    ConstraintName: Constraint1  
    Type: UniqueConstraint  
    Table: Order  
    Columns: Order_Id   
    IsPrimaryKey: True  
    
  • Un vincolo di chiave esterna nella OrderDetail tabella.A foreign key constraint on the OrderDetail table.

    ConstraintName: Order_OrderDetail  
    Type: ForeignKeyConstraint  
    Table: OrderDetail  
    Columns: Order_Id   
    RelatedTable: Order  
    RelatedColumns: Order_Id   
    
  • Una relazione tra il ordine e OrderDetail tabelle.A relationship between the Order and OrderDetail tables. Il Nested per questa relazione è impostata su True perché il ordine e OrderDetail elementi sono annidati nello schema .The Nested property for this relationship is set to True because the Order and OrderDetail elements are nested in the schema.

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

Vedere ancheSee Also

Generazione di relazioni tra DataSet da XML Schema (XSD)Generating DataSet Relations from XML Schema (XSD)
Mapping tra vincoli XML Schema (XSD) e vincoli di DataSetMapping XML Schema (XSD) Constraints to DataSet Constraints
Provider gestiti ADO.NET e Centro per sviluppatori di set di datiADO.NET Managed Providers and DataSet Developer Center