Compartir a través de


Inferir columnas (ADO.NET)

Actualización: November 2007

Una vez que ADO.NET determina a partir de un documento XML los elementos que se van a inferir como tablas para un DataSet, se deducen las columnas para dichas tablas. ADO.NET 2.0 presenta un nuevo motor de inferencia de esquemas que deduce un tipo de datos con establecimiento inflexible de tipos para cada elemento simpleType. En versiones anteriores, el tipo de datos de un elemento simpleType deducido siempre era xsd:string.

Migración y compatibilidad con versiones anteriores

El método ReadXml acepta argumentos del tipo InferSchema. Este argumento le permite especificar un comportamiento de inferencia compatible con versiones anteriores. En la siguiente tabla se muestran los valores disponibles para la enumeración InferSchema.

  • InferSchema
    Proporciona compatibilidad con versiones anteriores al deducir siempre un tipo simple como String.

  • InferTypedSchema
    Infiere un tipo de datos con establecimiento inflexible de tipos. Inicia una excepción si se utiliza con una DataTable.

  • IgnoreSchema
    Omite cualquier esquema en línea y lee los datos del esquema del DataSet existente.

Atributos

Como se ha definido en Deducir tablas, un elemento que tenga atributos se deducirá como una tabla. Los atributos de dicho elemento se deducirán como columnas de la tabla. La propiedad ColumnMapping de las columnas se establecerá como MappingType.Attribute para asegurarse de que los nombres de columna se escribirán como atributos si se vuelve a escribir el esquema en XML. Los valores de los atributos se almacenan en una fila de la tabla. Por ejemplo, tomemos el siguiente código XML:

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

El proceso de deducción crea la tabla Element1 con dos columnas, attr1 y attr2. La propiedad ColumnMapping de ambas columnas se establecerá como MappingType.Attribute.

DataSet: DocumentElement

Tabla: Element1

attr1

attr2

value1

value2

Elementos sin atributos o elementos secundarios

Si un elemento no tiene elementos secundarios o atributos, se deducirá como una columna. La propiedad ColumnMapping de la columna se establecerá en MappingType.Element. El texto de los elementos secundarios se almacena en una fila de la tabla. Por ejemplo, tomemos el siguiente código XML:

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

El proceso de inferencia crea la tabla Element1 con dos columnas, ChildElement1 y ChildElement2. La propiedad ColumnMapping de ambas columnas se establecerá como MappingType.Element.

DataSet: DocumentElement

Tabla: Element1

ChildElement1

ChildElement2

Text1

Text2

Vea también

Conceptos

Cargar DataSet desde XML (ADO.NET)

Cargar la información de esquema de DataSet desde XML (ADO.NET)

Otros recursos

Deducir la estructura relacional de DataSet de XML (ADO.NET)

Utilizar XML en un DataSet (ADO.NET)

DataSets, DataTables y DataViews (ADO.NET)