Freigeben über


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