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