Condividi tramite


Inferenza di colonne (ADO.NET)

Una volta che ADO.NET ha determinato quali elementi di un documento XML devono essere inferiti come tabelle per un tipo DataSet, vengono inferite le colonne di tali tabelle. In ADO.NET 2.0 è stato introdotto un nuovo motore di inferenza dello schema che consente di inferire un tipo di dati tipizzato per ogni elemento simpleType. Nelle versioni precedenti il tipo di dati di un elemento simpleType inferito era sempre xsd:string.

Migrazione e compatibilità con versioni precedenti

Il metodo ReadXml accetta un argomento di tipo InferSchema. Tale argomento consente di specificare il comportamento di inferenza compatibile con versioni precedenti. Nella tabella seguente sono indicati i valori disponibili per l'enumerazione InferSchema:

  • InferSchema
    Fornisce compatibilità con le versioni precedenti inferendo sempre un tipo semplice come String.

  • InferTypedSchema
    Inferisce un tipo di dati tipizzato in modo sicuro. Viene generata un'eccezione se utilizzato con un tipo DataTable.

  • IgnoreSchema
    Ignora tutti gli schemi inline e legge i dati nello schema DataSet esistente.

Attributi

Come definito nella sezione Inferenza di tabelle, un elemento con attributi verrà inferito come tabella. Gli attributi di tale elemento verranno quindi inferiti come colonne della tabella. La proprietà ColumnMapping delle colonne verrà impostata su MappingType.Attribute, per assicurare che i nomi delle colonne vengano scritti come attributi in caso di riconversione in XML dello schema. I valori degli attributi vengono archiviati in una riga della tabella. Ad esempio, si consideri il seguente codice XML:

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

Il processo di inferenza genererà una tabella denominata Element1 con due colonne, ovvero attr1 e attr2. La proprietà ColumnMapping per entrambe le colonne verrà impostata su MappingType.Attribute.

DataSet: DocumentElement

Table: Element1

attr1

attr2

value1

value2

Elementi privi di attributi o elementi figlio

Se un elemento non dispone di elementi figlio o attributi, tale elemento verrà inferito come colonna. La proprietà ColumnMapping della colonna verrà impostata su MappingType.Element. Il testo degli elementi figlio è archiviato in una riga della tabella. Ad esempio, si consideri il seguente codice XML:

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

Il processo di inferenza genererà una tabella denominata Element1 con due colonne, ovvero ChildElement1 e ChildElement2. La proprietà ColumnMapping per entrambe le colonne verrà impostata su MappingType.Element.

DataSet: DocumentElement

Table: Element1

ChildElement1

ChildElement2

Text1

Text2

Vedere anche

Concetti

Caricamento di un DataSet da XML (ADO.NET)

Caricamento delle informazioni relative allo schema di un DataSet da XML (ADO.NET)

Altre risorse

Inferenza della struttura relazionale del DataSet da XML (ADO.NET)

Utilizzo di XML in un DataSet (ADO.NET)

DataSet, DataTable e DataView (ADO.NET)