Härleda relationer
Om ett element som härleds som en tabell har ett underordnat element som också härleds som en tabell, skapas ett DataRelation mellan de två tabellerna. En ny kolumn med namnet ParentTableName_Id läggs till i både tabellen som skapats för det överordnade elementet och tabellen som skapats för det underordnade elementet. Egenskapen ColumnMapping för den här identitetskolumnen anges till MappingType.Hidden. Kolumnen är en automatisk inkrementell primärnyckel för den överordnade tabellen och används för DataRelation mellan de två tabellerna. Datatypen för den tillagda identitetskolumnen är System.Int32, till skillnad från datatypen för alla andra härledda kolumner, som är System.String. A ForeignKeyConstraint med DeleteRule = Cascade skapas också med den nya kolumnen i både de överordnade och underordnade tabellerna.
Tänk till exempel på följande XML:
<DocumentElement>
<Element1>
<ChildElement1 attr1="value1" attr2="value2"/>
<ChildElement2>Text2</ChildElement2>
</Element1>
</DocumentElement>
Slutsatsdragningsprocessen skapar två tabeller: Element1 och ChildElement1.
Tabellen Element1 har två kolumner: Element1_Id och ChildElement2. Egenskapen ColumnMapping för kolumnen Element1_Id anges till MappingType.Hidden. Egenskapen ColumnMapping för kolumnen ChildElement2 anges till MappingType.Element. Kolumnen Element1_Id anges som primärnyckel för tabellen Element1 .
Tabellen ChildElement1 har tre kolumner: attr1, attr2 och Element1_Id. Egenskapen ColumnMapping för attr1 - och attr2-kolumnerna anges till MappingType.Attribute. Egenskapen ColumnMapping för kolumnen Element1_Id anges till MappingType.Hidden.
En DataRelation och ForeignKeyConstraint skapas med hjälp av de Element1_Id kolumnerna från båda tabellerna.
DataSet: DocumentElement
Tabell: Element1
Element1_Id | ChildElement2 |
---|---|
0 | Text 2 |
Tabell: ChildElement1
attr1 | attr2 | Element1_Id |
---|---|---|
value1 | value2 | 0 |
DataRelation: Element1_ChildElement1
ParentTable: Element1
ParentColumn: Element1_Id
ChildTable: ChildElement1
ChildColumn: Element1_Id
Kapslad: True
ForeignKeyConstraint: Element1_ChildElement1
Kolumn: Element1_Id
ParentTable: Element1
ChildTable: ChildElement1
DeleteRule: Kaskad
AcceptRejectRule: Ingen