Herleiten von Beziehungen
Wenn ein als Tabelle hergeleitetes Element ein ebenfalls als Tabelle hergeleitetes untergeordnetes Element aufweist, wird zwischen den beiden Tabellen eine DataRelation erstellt. Eine neue Spalte namens "ParentTableName_Id" wird sowohl zu der für das übergeordnete als auch zu der für das untergeordnete Element erstellten Tabelle hinzugefügt. Für die ColumnMapping-Eigenschaft dieser Identitätsspalte wird MappingType.Hidden festgelegt. Diese Spalte stellt einen sich automatisch erhöhenden Primärschlüssel für die übergeordnete Tabelle dar und wird für die DataRelation zwischen den beiden Tabellen verwendet. Im Gegensatz zum Datentyp aller anderen hergeleiteten Spalten, System.String, lautet der Datentyp der hinzugefügten Identitätsspalte System.Int32. Außerdem wird anhand der neuen Spalte in der übergeordneten und der untergeordneten Tabelle eine ForeignKeyConstraint mit DeleteRule = Überlappend erstellt.
Betrachten Sie z. B. folgenden XML-Code:
<DocumentElement>
<Element1>
<ChildElement1 attr1="value1" attr2="value2"/>
<ChildElement2>Text2</ChildElement2>
</Element1>
</DocumentElement>
Der Rückschlussprozess erstellt zwei Tabellen namens "Element1" und "ChildElement1".
Die Tabelle "Element1" hat zwei Spalten: "Element1_Id" und "ChildElement2". Für die ColumnMapping-Eigenschaft der Spalte "Element1_Id" wird MappingType.Hidden festgelegt. Für die ColumnMapping-Eigenschaft der Spalte "ChildElement2" wird MappingType.Element festgelegt. Die Spalte "Element1_Id" wird als Primärschlüssel der Tabelle "Element1" festgelegt.
Die Tabelle "ChildElement1" hat drei Spalten: "attr1", "attr2" und "Element1_Id". Für die ColumnMapping-Eigenschaft der Spalten "attr1" und "attr2" wird MappingType.Attribute festgelegt. Für die ColumnMapping-Eigenschaft der Spalte "Element1_Id" wird MappingType.Hidden festgelegt.
Anhand der Spalte "Element1_Id" aus beiden Tabellen wird eine DataRelation und eine ForeignKeyConstraint erstellt.
DataSet: DocumentElement
Table: Element1
Element1_Id | ChildElement2 |
---|---|
0 | Text2 |
Table: ChildElement1
attr1 | attr2 | Element1_Id |
---|---|---|
value1 | value2 | 0 |
DataRelation: Element1_ChildElement1
ParentTable: Element1
ParentColumn: Element1_Id
ChildTable: ChildElement1
ChildColumn: Element1_Id
Nested: True
ForeignKeyConstraint: Element1_ChildElement1
Column: Element1_Id
ParentTable: Element1
ChildTable: ChildElement1
DeleteRule: Überlappend
AcceptRejectRule: Keine
Siehe auch
Herleiten der relationalen DataSet-Struktur aus XML | Laden eines DataSets aus XML | Laden von DataSet-Schemainformationen aus XML | Geschachtelte DataRelations | XML und das DataSet | Erstellen und Verwenden von DataSets