Condividi tramite


Generazione di Relazioni Dataset da Schema XML (XSD)

In un DataSet, si forma un'associazione tra due o più colonne creando una relazione padre-figlio. Esistono tre modi per rappresentare una relazione DataSet all'interno di uno schema XSD (XML Schema Definition Language):

  • Specificare i tipi complessi annidati.

  • Usare l'annotazione msdata:Relationship .

  • Specifica un xs:keyref senza l'annotazione msdata:ConstraintOnly.

Tipi complessi annidati

Le definizioni di tipi complessi annidati in uno schema indicano le relazioni padre-figlio degli elementi. Il frammento di XML Schema seguente mostra che OrderDetail è un elemento figlio dell'elemento Order .

<xs:element name="Order">  
  <xs:complexType>  
     <xs:sequence>
       <xs:element name="OrderDetail" />  
           <xs:complexType>
           </xs:complexType>  
     </xs:sequence>  
  </xs:complexType>  
</xs:element>  

Il processo di mapping di XML Schema crea tabelle nell'oggetto DataSet che corrispondono ai tipi complessi annidati nello schema. Crea inoltre colonne aggiuntive utilizzate come colonne padre figlio -per le tabelle generate. ** Si noti che queste colonne padre-figlio-specificano relazioni, che non sono le stesse dei vincoli di chiave primaria/chiave esterna.

Annotazione di relazione msdata:Relationship

L'annotazione msdata:Relationship consente di specificare in modo esplicito relazioni padre-figlio tra gli elementi nello schema che non sono annidati. Nell'esempio seguente viene illustrata la struttura dell'elemento Relationship .

<msdata:Relationship name="CustOrderRelationship"
msdata:parent=""
msdata:child=""
msdata:parentkey=""
msdata:childkey="" />  

Gli attributi dell'annotazione msdata:Relationship identificano gli elementi coinvolti nella relazione padre-figlio, nonché gli elementi parentkey e childkey e gli attributi coinvolti nella relazione. Il processo di mapping usa queste informazioni per generare tabelle nel DataSet e per creare la relazione chiave primaria/chiave esterna tra queste tabelle.

Ad esempio, il frammento di schema seguente specifica gli elementi Order e OrderDetail allo stesso livello (non annidati). Lo schema specifica un'annotazione msdata:Relationship , che specifica la relazione padre-figlio tra questi due elementi. In questo caso, è necessario specificare una relazione esplicita usando l'annotazione msdata:Relationship .

 <xs:element name="MyDataSet" msdata:IsDataSet="true">  
  <xs:complexType>  
    <xs:choice maxOccurs="unbounded">  
        <xs:element name="OrderDetail">  
          <xs:complexType>  
  
          </xs:complexType>  
       </xs:element>  
       <xs:element name="Order">  
          <xs:complexType>  
  
          </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>  

Il processo di mapping utilizza l'elemento Relationship per creare una relazione padre-figlio tra la colonna OrderNumber nella tabella Order e la colonna OrderNo nella tabella OrderDetail del DataSet. Il processo di mapping specifica solo la relazione; non specifica automaticamente alcun vincolo sui valori di queste colonne, a differenza dei vincoli di chiave primaria/chiave esterna nei database relazionali.

In questa sezione

Eseguire il mapping delle relazioni implicite tra elementi dello schema annidati
Descrive i vincoli e le relazioni creati in modo implicito in un oggetto DataSet quando vengono rilevati elementi annidati in XML Schema.

Relazioni di mappa specificate per elementi annidati
Viene descritto come impostare in modo esplicito le relazioni in un oggetto DataSet per gli elementi annidati in XML Schema.

Specificare le relazioni tra elementi senza nidificazione
Viene descritto come creare relazioni in un oggetto DataSet tra elementi di XML Schema non annidati.

Derivazione di una struttura relazionale dataset da XML Schema (XSD)
Descrive la struttura relazionale o lo schema di un oggetto DataSet creato dallo schema XSD (XML Schema Definition Language).

Mapping dei vincoli XML Schema (XSD) ai vincoli DataSet
Vengono descritti gli elementi xml Schema utilizzati per creare vincoli di chiave univoca ed esterna in un oggetto DataSet.

Vedere anche