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

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 der msdata:Relationship-Anmerkung

  • Angeben einer xs:keyref ohne die msdata:ConstraintOnly-Anmerkung

Geschachtelte komplexe Typen

Geschachtelte komplexe Typdefinitionen in einem Schema geben die Beziehungen zwischen übergeordneten und untergeordneten Elementen an. Im folgenden Fragment 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 außerdem 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är- 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 sowie 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 Schemafragment 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 Zuordnungsprozess erstellt mit dem Relationship-Element eine Beziehung zwischen übergeordneten und untergeordneten Elementen für die Spalte OrderNumber in der Tabelle Order und der Spalte OrderNo in der Tabelle OrderDetail 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.

In diesem Abschnitt

Zuordnen von impliziten Beziehungen zwischen geschachtelten Schemaelementen
Beschreibt die Einschränkungen und Beziehungen, die implizit in einem DataSet erstellt werden, wenn geschachtelte Elemente im XML-Schema vorhanden sind.

Zuordnen von Beziehungen, die für geschachtelte Elemente angegeben sind
Beschreibt das explizite Festlegen von Beziehungen in einem DataSet für geschachtelte Elemente in einem XML-Schema.

Angeben von Beziehungen zwischen Elementen ohne Verschachtelung
Beschreibt das Erstellen von Beziehungen in einem DataSet zwischen nicht geschachtelten XML-Schemaelementen.

Ableiten einer relationalen DataSet-Struktur aus einem XML-Schema (XSD)
Beschreibt die relationale Struktur bzw. das Schema eines DataSet, das aus einem XSD-Schema (XML Schema Definition Language) erstellt wird.

Zuordnen von XML Schema (XSD)-Schlüsseleinschränkungen zu DataSet-Einschränkungen
Beschreibt die zum Erstellen von eindeutigen Einschränkungen und Fremdschlüsseleinschränkungen in einem DataSet verwendeten XML-Schemaelemente.

Siehe auch