Определение отношений

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

См. также