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)