Sdílet prostřednictvím


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é

Viz také