Вывод взаимоотношений

Если элемент, выводимый как таблица, имеет дочерний элемент, который также выводится как таблица, 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 Текст2

Таблица: ChildElement1

attr1 атрибут2 Element1_Id
значение1 значение2 0

DataRelation: Element1_ChildElement1

ParentTable: Элемент1

ParentColumn: Element1_Id

ChildTable: ChildElement1

Дочерний столбец: Element1_Id

Вложенный: Да

ForeignKeyConstraint: Element1_ChildElement1

Столбец: Element1_Id

ParentTable: Элемент1

ChildTable: ChildElement1

DeleteRule: Каскад

AcceptRejectRule: Отсутствует

См. также