Odvozování relací
Pokud prvek, který je odvozen jako tabulka, má podřízený prvek, který je také odvozen jako tabulka, DataRelation bude vytvořen mezi těmito dvěma tabulkami. Nový sloupec s názvem ParentTableName_Id se přidá do tabulky vytvořené pro nadřazený prvek i do tabulky vytvořené pro podřízený prvek. Vlastnost ColumnMapping tohoto sloupce identity bude nastavena na MappingType.Hidden. Sloupec bude automaticky inkrementovat primární klíč nadřazené tabulky a použije se pro dataRelation mezi těmito dvěma tabulkami. Datový typ přidaného sloupce identity bude System.Int32, na rozdíl od datového typu všech ostatních odvozených sloupců, což je System.String. Funkce ForeignKeyConstraint DeleteRule = Cascade se také vytvoří pomocí nového sloupce v nadřazených i podřízených tabulkách.
Představte si například následující kód XML:
<DocumentElement>
<Element1>
<ChildElement1 attr1="value1" attr2="value2"/>
<ChildElement2>Text2</ChildElement2>
</Element1>
</DocumentElement>
Proces odvozování vytvoří dvě tabulky: Element1 a ChildElement1.
Tabulka Element1 bude mít dva sloupce: Element1_Id a ChildElement2. Vlastnost ColumnMapping sloupce Element1_Id bude nastavena na MappingType.Hidden. Vlastnost ColumnMapping sloupce ChildElement2 bude nastavena na MappingType.Element. Sloupec Element1_Id bude nastaven jako primární klíč tabulky Element1 .
Tabulka ChildElement1 bude obsahovat tři sloupce: attr1, attr2 a Element1_Id. Vlastnost ColumnMapping pro sloupce attr1 a attr2 bude nastavena na MappingType.Attribute. Vlastnost ColumnMapping sloupce Element1_Id bude nastavena na MappingType.Hidden.
DataRelation a ForeignKeyConstraint budou vytvořeny pomocí Element1_Id sloupců z obou tabulek.
Datová sada: DocumentElement
Tabulka: Element1
Element1_Id | ChildElement2 |
---|---|
0 | Text 2 |
Tabulka: ChildElement1
attr1 | attr2 | Element1_Id |
---|---|---|
hodnota1 | hodnota2 | 0 |
DataRelation: Element1_ChildElement1
ParentTable: Element1
ParentColumn: Element1_Id
Podřízená tabulka: ChildElement1
Podřízený sloupec: Element1_Id
Vnořené: True
ForeignKeyConstraint: Element1_ChildElement1
Sloupec: Element1_Id
ParentTable: Element1
Podřízená tabulka: ChildElement1
DeleteRule: Kaskádová
AcceptRejectRule: Žádné