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
- 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 für geschachtelte Elemente angegebenen Beziehungen
Beschreibt das explizite Festlegen von Beziehungen in einem DataSet für geschachtelte Elemente in einem XML-Schema. - Angeben von Beziehungen zwischen Elementen ohne Schachtelung
Beschreibt das Erstellen von Beziehungen in einem DataSet zwischen XML-Schemaelementen, die nicht geschachtelt sind.
Verwandte Abschnitte
- Generieren einer relationalen DataSet-Struktur aus einem XML-Schema (XSD)
Beschreibt die relationale Struktur oder das Schema eines DataSets, das aus einem XML Schema Definition (XSD)-Sprachschema erstellt wird. - Zuordnen von XML-Schema (XSD)-Einschränkungen zu DataSet-Einschränkungen
Beschreibt die XML-Schemaelemente, mit denen eindeutige und Fremdschlüsseleinschränkungen in einem DataSet erstellt werden. - Datentypunterstützung zwischen XML-Schematypen (XSD) und .NET Framework-Typen
Beschreibt, wie XML-Schematypen als .NET Framework-Typen für Spalten in einem DataSet dargestellt werden.