Partager via


Inférence des colonnes (ADO.NET)

Après avoir déterminé les éléments à déduire en tant que tables pour un objet DataSet à partir d'un document XML, ADO.NET déduit les colonnes pour ces tables. ADO.NET 2.0 a introduit un nouveau moteur d'inférence de schéma qui déduit un type de données fortement typées pour chaque élément simpleType. Dans les versions précédentes, le type de données d'un élément simpleType déduit était toujours xsd:string.

Migration et compatibilité ascendante

La méthode ReadXml prend un argument de type InferSchema. Cet argument vous permet de spécifier un comportement d'inférence compatible avec les versions précédentes. Les valeurs disponibles pour l'énumération InferSchema sont indiquées dans le tableau suivant.

  • InferSchema
    Assure la compatibilité ascendante en déduisant toujours un type simple comme l'objet String.

  • InferTypedSchema
    Déduit un type de données fortement typées. Lève une exception s'il est utilisé avec un objet DataTable.

  • IgnoreSchema
    Ignore tout schéma inline et lit les données dans le schéma DataSet existant.

Attributs

Comme défini dans Inférence des tables, un élément assorti d'attributs sera déduit en tant que table. Les attributs de cet élément seront ensuite déduits en tant que colonnes de cette table. La propriété ColumnMapping des colonnes aura pour valeur MappingType.Attribute. De cette façon, les noms des colonnes seront écrits en tant qu'attributs, ce qui sera utile si le schéma doit être réécrit en XML. Les valeurs des attributs sont stockées dans une ligne de la table. Examinons, par exemple, le code XML suivant :

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

Le processus d'inférence produira une table nommée Element1, avec deux colonnes, attr1 et attr2. La propriété ColumnMapping des deux colonnes aura pour valeur MappingType.Attribute.

DataSet : DocumentElement

Table: Element1

attr1

attr2

value1

value2

Éléments dépourvus d'attributs ou d'éléments enfants

Si un élément ne comporte ni éléments enfants, ni attributs, il sera déduit en tant que colonne. La propriété ColumnMapping de la colonne aura pour valeur MappingType.Element. Le texte des éléments enfants est stocké dans une ligne de la table. Examinons, par exemple, le code XML suivant :

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

Le processus d'inférence produira une table nommée Element1, avec deux colonnes, ChildElement1 et ChildElement2. La propriété ColumnMapping des deux colonnes aura pour valeur MappingType.Element.

DataSet : DocumentElement

Table: Element1

ChildElement1

ChildElement2

Text1

Text2

Voir aussi

Concepts

Chargement d'un DataSet à partir de XML (ADO.NET)

Chargement des informations de schéma d'un DataSet à partir de XML (ADO.NET)

Autres ressources

Déduction de la structure relationnelle d'un DataSet à partir de XML (ADO.NET)

Utilisation de XML dans un DataSet (ADO.NET)

Objets DataSet, DataTable et DataView (ADO.NET)