Определение столбцов

ADO.NET определяет по XML-документу, какие элементы выводятся как таблицы для DataSet, а затем выводятся столбцы для этих таблиц. ADO.NET 2.0 появился новый механизм вывода схемы, который вводит строго типизированный тип данных для каждого элемента simpleType . В предыдущих версиях тип данных выводимого элемента simpleType всегда был xsd:string.

Миграция и обратная совместимость

Метод ReadXml принимает аргумент типа InferSchema. Этот аргумент позволяет задать поведение, совместимое с предыдущими версиями. Доступные значения перечисления InferSchema показаны в следующей таблице.

InferSchema
Обеспечивает обратную совместимость, выводя в качестве простого типа всегда тип String.

InferTypedSchema
Выводит строго типизированный тип данных. Вызывает исключение при использовании с DataTable.

IgnoreSchema
Пропускает любую встроенную схему и считывает данные в существующую схему DataSet.

Атрибуты

Как определено в таблицах вывода, элемент с атрибутами будет выводиться в виде таблицы. Атрибуты этого элемента будут выведены как столбцы для таблицы. Свойство ColumnMapping столбцов будет иметь значение MappingType.Attribute, чтобы убедиться, что имена столбцов записываются как атрибуты, если схема записывается обратно в XML. Значения атрибутов хранятся в строке в таблице. Например, рассмотрим следующий XML-код:

<DocumentElement>  
  <Element1 attr1="value1" attr2="value2"/>  
</DocumentElement>  

Процесс вывода создает таблицу с именем Element1 с двумя столбцами attr1 и attr2. Свойство ColumnMapping обоих столбцов будет иметь значение MappingType.Attribute.

Набор данных: DocumentElement

Таблица: Элемент1

attr1 attr2
value1 value2

Элементы без атрибутов или дочерние элементы

Если элемент не имеет дочерних элементов или атрибутов, то он будет выведен как столбец. Свойство ColumnMapping столбца будет иметь значение MappingType.Element. Текст для дочерних элементов хранится в строке в таблице. Например, рассмотрим следующий XML-код:

<DocumentElement>  
  <Element1>  
    <ChildElement1>Text1</ChildElement1>  
    <ChildElement2>Text2</ChildElement2>  
  </Element1>  
</DocumentElement>  

Процесс вывода создаст таблицу с именем Element1 с двумя столбцами, ChildElement1 и ChildElement2. Свойство ColumnMapping обоих столбцов будет иметь значение MappingType.Element.

Набор данных: DocumentElement

Таблица: Элемент1

ChildElement1 ChildElement2
Text1 Text2

См. также