Поделиться через


Выведение связей (ADO.NET)

Обновлен: November 2007

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

DataSet: DocumentElement

Table: Element1

Element1_Id

ChildElement2

0

Text2

Table: ChildElement1

attr1

attr2

Element1_Id

value1

value2

0

DataRelation: Element1_ChildElement1

ParentTable: Element1

ParentColumn: Element1_Id

ChildTable: ChildElement1

ChildColumn: Element1_Id

Nested: True

ForeignKeyConstraint: Element1_ChildElement1

Column: Element1_Id

ParentTable: Element1

ChildTable: ChildElement1

DeleteRule: Cascade

AcceptRejectRule: None

См. также

Основные понятия

Загрузка DataSet из XML (ADO.NET)

Загрузка сведений о схеме DataSet из XML (ADO.NET)

Вложенность объектов DataRelation (ADO.NET)

Другие ресурсы

Вывод реляционной структуры DataSet из XML (ADO.NET)

Использование XML в DataSet (ADO.NET)

Объекты DataSet, DataTable и DataView (ADO.NET)