Ableiten 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 mit dem Namen ParentTableName_Id wird sowohl der für das übergeordnete Element als auch der für das untergeordnete Element erstellten Tabelle 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 abgeleiteten Spalten (System.String) lautet der Datentyp der hinzugefügten Identitätsspalte System.Int32. Außerdem wird anhand der neuen Spalte in der über- und 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>
Beim Ableitungsvorgang werden zwei Tabellen erstellt: Element1 und ChildElement1.
Die Tabelle Element1 enthält zwei Spalten: Element1_Id und ChildElement2. Die ColumnMapping-Eigenschaft der Spalte Element1_Id wird auf MappingType.Hidden festgelegt. Die ColumnMapping-Eigenschaft der Spalte ChildElement2 wird auf MappingType.Element festgelegt. Die Spalte Element1_Id wird als Primärschlüssel der Tabelle Element1 festgelegt.
Die Tabelle ChildElement1 enthält drei Spalten: attr1, attr2 und Element1_Id. Die ColumnMapping-Eigenschaft der Spalten attr1 und attr2 wird auf MappingType.Attribute festgelegt. Die ColumnMapping-Eigenschaft der Spalte Element1_Id wird auf MappingType.Hidden festgelegt.
Unter Verwendung der Spalten Element1_Id aus beiden Tabellen wird DataRelation und 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
- Ableiten einer relationalen DataSet-Struktur aus einem XML-Schema
- Laden eines "DataSets" aus XML
- Laden von DataSet-Schemainformationen aus XML
- Verschachteln von "DataRelations"
- Using XML in a DataSet (Verwenden von XML in einem DataSet)
- "DataSets", "DataTables" und "DataViews"
- Übersicht über ADO.NET