Dela via


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

Se även