Определение отношений
Если элемент, выводимый в виде таблицы, имеет дочерний элемент, который также выводится в виде таблицы, между двумя этими таблицами будет создана связь DataRelation. Новый столбец с именем ParentTableName_Id будет добавлен как в таблицу, созданную для родительского элемента, так и таблицу, созданную для дочернего элемента. Свойство ColumnMapping этого столбца удостоверений будет иметь значение MappingType.Hidden. Столбец будет автоматически увеличивать первичный ключ для родительской таблицы и будет использоваться для DataRelation между двумя таблицами. Тип данных столбца добавленного удостоверения будет System.Int32, в отличие от типа данных всех остальных выводимых столбцов, которые являются System.String. Кроме того, ForeignKeyConstraint с помощью DeleteRule = Cascade будет создан новый столбец в родительских и дочерних таблицах.
Например, рассмотрим следующий XML-код:
<DocumentElement>
<Element1>
<ChildElement1 attr1="value1" attr2="value2"/>
<ChildElement2>Text2</ChildElement2>
</Element1>
</DocumentElement>
Процесс вывода создаст две таблицы: Element1 и ChildElement1.
Таблица Element1 будет содержать два столбца: Element1_Id и ChildElement2. Свойство ColumnMapping столбца Element1_Id будет иметь значение MappingType.Hidden. Свойство ColumnMapping столбца ChildElement2 будет иметь значение MappingType.Element. Столбец Element1_Id будет задан в качестве первичного ключа таблицы Element1 .
Таблица ChildElement1 будет содержать три столбца: attr1, attr2 и Element1_Id. Свойство ColumnMapping для столбцов attr1 и attr2 будет иметь значение MappingType.Attribute. Свойство ColumnMapping столбца Element1_Id будет иметь значение MappingType.Hidden.
DataRelation и ForeignKeyConstraint будет создан с помощью столбцов Element1_Id из обеих таблиц.
Набор данных: DocumentElement
Таблица: Элемент1
Element1_Id | ChildElement2 |
---|---|
0 | Text2 |
Таблица: ChildElement1
attr1 | attr2 | Element1_Id |
---|---|---|
value1 | value2 | 0 |
DataRelation: Element1_ChildElement1
ParentTable: Element1
ParentColumn: Element1_Id
ChildTable: ChildElement1
ChildColumn: Element1_Id
Вложенный: True
ForeignKeyConstraint: Element1_ChildElement1
Столбец: Element1_Id
ParentTable: Element1
ChildTable: ChildElement1
DeleteRule: Каскад
AcceptRejectRule: None