Herleiten von Beziehungen (ADO.NET)

Aktualisiert: November 2007

Wenn ein als Tabelle hergeleitetes Element ein ebenfalls als Tabelle hergeleitetes untergeordnetes Element aufweist, wird zwischen den beiden Tabellen eine DataRelation erstellt. Sowohl der für das übergeordnete Element als auch der für das untergeordnete Element erstellten Tabelle wird eine neue Spalte mit dem Namen ParentTableName_Id hinzugefügt. Die ColumnMapping-Eigenschaft dieser Identitätsspalte wird auf 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 = Cascade erstellt.

Betrachten Sie beispielsweise den folgenden XML-Code:

<DocumentElement>
  <Element1>
    <ChildElement1 attr1="value1" attr2="value2"/>
    <ChildElement2>Text2</ChildElement2>
  </Element1>
</DocumentElement>

Der Herleitungsprozess erstellt die folgenden zwei Tabellen: Element1 und ChildElement1.

Die Element1-Tabelle besitzt die folgenden zwei Spalten: Element1_Id und ChildElement2. Die ColumnMapping-Eigenschaft der Element1_Id-Spalte wird auf MappingType.Hidden festgelegt. Die ColumnMapping-Eigenschaft der ChildElement2-Spalte wird auf MappingType.Element festgelegt. Die Element1_Id-Spalte wir als Primärschlüssel der Element1-Tabelle festgelegt.

Die ChildElement1-Tabelle besitzt die folgenden drei Spalten: attr1, attr2 und Element1_Id. Die ColumnMapping-Eigenschaft der attr1-Spalte und der attr2-Spalte wird auf MappingType.Attribute festgelegt. Die ColumnMapping-Eigenschaft der Element1_Id-Spalte wird auf MappingType.Hidden festgelegt.

Unter Verwendung der Element1_Id-Spalten beider Tabellen wird eine DataRelation und eine ForeignKeyConstraint erstellt.

DataSet: DocumentElement

Tabelle: Element1

Element1_Id

ChildElement2

0

Text2

Tabelle: 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: Cascade

AcceptRejectRule: None

Siehe auch

Konzepte

Laden eines 'DataSet' aus XML (ADO.NET)

Laden von 'DataSet'-Schemainformationen aus XML (ADO.NET)

Schachteln von 'DataRelations' (ADO.NET)

Weitere Ressourcen

Herleiten der relationalen 'DataSet'-Struktur aus XML (ADO.NET)

Verwenden von XML in einem 'DataSet' (ADO.NET)

'DataSets', 'DataTables' und 'DataViews' (ADO.NET)