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)