Freigeben über


Generieren von DataSet-Beziehungen aus einem XML-Schema (XSD)

Aktualisiert: November 2007

In einem DataSet können Sie eine Verknüpfung zwischen zwei oder mehreren Spalten erstellen, indem Sie eine Beziehung zwischen übergeordneten und untergeordneten Elementen erstellen. Es gibt drei Möglichkeiten, eine DataSet-Beziehung innerhalb eines XSD-Schemas (XML Schema Definition Language) darzustellen:

  • Geben Sie geschachtelte komplexe Typen an.

  • Verwenden Sie die msdata:Relationship-Anmerkung.

  • Geben Sie xs:keyref ohne die msdata:ConstraintOnly-Anmerkung an.

Geschachtelte komplexe Typen

Geschachtelte komplexe Typdefinitionen in einem Schema geben die Beziehungen zwischen übergeordneten und untergeordneten Elementen an. Im folgenden Ausschnitt eines XML-Schemas wird dargestellt, dass OrderDetail ein untergeordnetes Element des Order-Elements ist.

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

Der XML-Schemazuordnungsprozess erstellt Tabellen im DataSet, die den geschachtelten komplexen Typen im Schema entsprechen. Er erstellt ebenfalls zusätzliche Spalten, die als übergeordnete und untergeordnete Spalten für die generierten Tabellen verwendet werden. Beachten Sie, dass durch diese übergeordneten und untergeordneten Spalten Beziehungen angegeben werden. Dies ist nicht mit dem Angeben von Primärschlüssel- und Fremdschlüsseleinschränkungen identisch.

Die "msdata:Relationship"-Anmerkung

Mit der msdata:Relationship-Anmerkung können Sie für nicht geschachtelte Elemente im Schema die Beziehungen zwischen übergeordneten und untergeordneten Elementen explizit angeben. Im folgenden Beispiel wird die Struktur des Relationship-Elements dargestellt.

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

Mit den Attributen der msdata:Relationship-Anmerkung werden die einzubeziehenden Elemente für die Beziehung zwischen übergeordneten und untergeordneten Elementen sowie das parentkey-Element und das childkey-Element und die erforderlichen Attribute der Beziehung angegeben. Der Zuordnungsprozess verwendet diese Informationen, um Tabellen im DataSet zu generieren und die Primärschlüssel-Fremdschlüssel-Beziehung zwischen diesen Tabellen zu erstellen.

Im folgenden Schemaausschnitt werden beispielsweise das Order-Element und das OrderDetail-Element auf derselben Ebene (nicht geschachtelt) angegeben. In dem Schema ist eine msdata:Relationship-Anmerkung angegeben, die die Beziehung zwischen übergeordneten und untergeordneten Elementen für diese beiden Elementen festlegt. In diesem Fall muss mithilfe der msdata:Relationship-Anmerkung eine explizite Beziehung angegeben werden.

 <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>
 

Der Zurordnungsprozess erstellt mit dem Relationship-Element eine Beziehung zwischen übergeordneten und untergeordneten Elementen für die OrderNumber-Spalte in der Order-Tabelle und der OrderNo-Spalte in der OrderDetail-Tabelle des DataSet. Der Zuordnungsprozess gibt nur die Beziehung an. Einschränkungen für die Werte in diesen Spalten werden nicht wie bei den Primärschlüssel- und Fremdschlüsseleinschränkungen in relationalen Datenbanken automatisch angegeben.

Dieser Abschnitt enthält Folgendes

Verwandte Abschnitte