Freigeben über


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 Parent-Child-Beziehung erstellen. Es gibt drei Möglichkeiten, eine DataSet-Beziehung innerhalb eines XML Schema Definition (XSD)-Sprachschemas darzustellen:

  • Geben Sie geschachtelte komplexe Typen an.
  • Verwenden Sie die msdata:Relationship-Anmerkung.
  • Geben Sie xs:keyref ohne msdata:ConstraintOnly-Anmerkung an.

Geschachtelte komplexe Typen

Geschachtelte komplexe Typendefinitionen in einem Schema geben die Parent-Child-Beziehungen von Elementen an. Der folgende Ausschnitt eines XML-Schemas zeigt, 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 Parent-Child-Spalten für generierte Tabellen verwendet werden. Beachten Sie, dass diese Parent-Child-Spalten Beziehungen angeben. Dies ist nicht mit Primärschlüssel-/Fremdschlüsseleinschränkungen identisch.

msdata:Relationship-Anmerkung

Mit der msdata:Relationship-Anmerkung können Sie Parent-Child-Beziehungen zwischen Elementen im Schema, die nicht geschachtelt sind, ausdrücklich angeben. Das folgende Beispiel verdeutlicht die Struktur des Relationship-Elements:

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

Die Attribute der msdata:Relationship-Anmerkung identifizieren Elemente der Parent-Child-Beziehung sowie die Elemente parentkey und childkey und Attribute der Beziehung. Der Zuordnungsprozess verwendet dieses Informationen, um Tabellen im DataSet zu generieren und die Primärschlüssel-/Fremdschlüsselbeziehung zwischen diesen Tabellen zu erstellen.

Der folgende Schemaausschnitt gibt die Elemente Order und OrderDetail auf derselben Ebene (nicht geschachtelt) an: Das Schema gibt eine msdata:Relationship-Anmerkung an, die die Parent-Child-Beziehung zwischen diesen beiden Elementen angibt. In diesem Fall muss eine explizite Beziehung mit Hilfe der msdata:Relationship-Anmerkung 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 verwendet das Relationship-Element, um eine Parent-Child-Beziehung zwischen der OrderNumber-Spalte in der Order-Tabelle und der OrderNo-Spalte in der OrderDetail-Tabelle des DataSets zu erstellen. Der Zuordnungsprozess gibt nur die Beziehung an. Einschränkungen für die Werte in diesen Spalten werden nicht wie bei den Primärschlüssel-/Fremdschlüsseleinschränkungen in relationalen Datenbanken automatisch angegeben. Mit XML-Schemaelementen können Sie Einschränkungen in einem DataSet angeben, wie unter Datentypunterstützung zwischen XML-Schematypen (XSD) und .NET Framework-Typen beschrieben.

In diesem Abschnitt

Verwandte Abschnitte