Udostępnij za pośrednictwem


Wnioskowanie relacji

Jeśli element, który jest wnioskowany jako tabela, ma element podrzędny, który jest również wnioskowany jako tabela, DataRelation zostanie utworzony między dwiema tabelami. Nowa kolumna o nazwie ParentTableName_Id zostanie dodana zarówno do tabeli utworzonej dla elementu nadrzędnego, jak i tabeli utworzonej dla elementu podrzędnego. Właściwość ColumnMapping tej kolumny tożsamości zostanie ustawiona na Wartość MappingType.Hidden. Kolumna będzie automatycznie zwiększać klucz podstawowy dla tabeli nadrzędnej i będzie używana dla funkcji DataRelation między dwiema tabelami. Typ danych dodanej kolumny tożsamości to System.Int32, w przeciwieństwie do typu danych wszystkich innych kolumn wnioskowanych, czyli System.String. Obiekt ForeignKeyConstraint DeleteRule = Cascade zostanie również utworzony przy użyciu nowej kolumny w tabelach nadrzędnych i podrzędnych.

Rozważmy na przykład następujący kod XML:

<DocumentElement>  
  <Element1>  
    <ChildElement1 attr1="value1" attr2="value2"/>  
    <ChildElement2>Text2</ChildElement2>  
  </Element1>  
</DocumentElement>  

Proces wnioskowania spowoduje wygenerowanie dwóch tabel: Element1 i ChildElement1.

Tabela Element1 będzie zawierać dwie kolumny: Element1_Id i ChildElement2. Właściwość ColumnMapping kolumny Element1_Id zostanie ustawiona na Wartość MappingType.Hidden. Właściwość ColumnMapping kolumny ChildElement2 zostanie ustawiona na Wartość MappingType.Element. Kolumna Element1_Id zostanie ustawiona jako klucz podstawowy tabeli Element1 .

Tabela ChildElement1 będzie zawierać trzy kolumny: attr1, attr2 i Element1_Id. Właściwość ColumnMapping dla kolumn attr1 i attr2 zostanie ustawiona na Wartość MappingType.Attribute. Właściwość ColumnMapping kolumny Element1_Id zostanie ustawiona na Wartość MappingType.Hidden.

Obiekt DataRelation i ForeignKeyConstraint zostaną utworzone przy użyciu kolumn Element1_Id z obu tabel.

Zestaw danych: DocumentElement

Tabela: Element1

Element1_Id ChildElement2
0 Tekst2

Tabela: ChildElement1

attr1 attr2 Element1_Id
wartość1 value2 0

DataRelation: Element1_ChildElement1

ParentTable: Element1

Kolumna nadrzędna: Element1_Id

ChildTable: ChildElement1

Kolumna podrzędna: Element1_Id

Zagnieżdżone: prawda

ForeignKeyConstraint: Element1_ChildElement1

Kolumna: Element1_Id

ParentTable: Element1

ChildTable: ChildElement1

DeleteRule: Kaskada

AcceptRejectRule: Brak

Zobacz też