Выведение связей (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)