Inferenza di colonne

Quando si inferisce uno schema per un DataSet da un documento XML, una volta determinati gli elementi da inferire come tabelle, ADO.NET determina le colonne da inferire per tali tabelle sulla base degli elementi e degli attributi XML rimanenti. Poiché le informazioni relative al tipo di dati sono disponibili solo con uno schema inline, il tipo di dati di una colonna inferita sarà System.String. Le strutture XML riportate di seguito daranno come risultato colonne di tabelle.

Attributi

Come definito nella sezione Inferenza di tabelle, un elemento a cui sono associati attributi viene inferito come tabella. Gli attributi di tale elemento vengono quindi inferiti come colonne per la tabella. La proprietà ColumnMapping delle colonne viene impostata su MappingType.Attribute, in modo da assicurarsi che i nomi delle colonne vengano scritti come attributi in caso di riconversione in XML dello schema. I valori degli attributi vengono memorizzati in una riga della tabella. Si consideri ad esempio il seguente elemento XML:

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

Una tabella con due colonne, "attr1" e "attr2", denominata "Element1" verrà prodotta dal processo di inferenza. La proprietà ColumnMapping per entrambe le colonne viene impostata su MappingType.Attribute.

DataSet: DocumentElement

Table: Element1

attr1 attr2
value1 value2

Elementi privi di attributi o elementi figli

Se a un elemento non sono associati elementi figli o attributi, tale elemento verrà inferito come colonna. La proprietà ColumnMapping della colonna verrà impostata su MappingType.Element. Il testo degli elementi figli viene archiviato in una colonna della tabella. Si consideri ad esempio il seguente elemento XML:

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

Una tabella con due colonne, "ChildElement1" e "ChildElement2", denominata "Element1" verrà prodotta dal processo di inferenza. La proprietà ColumnMapping per entrambe le colonne viene impostata su MappingType.Element.

DataSet: DocumentElement

Table: Element1

ChildElement1 ChildElement2
Text1 Text2

Vedere anche

Inferenza della struttura relazionale del DataSet da XML | Caricamento di un DataSet da XML | Caricamento delle informazioni relative allo schema di un DataSet da XML | XML e il DataSet | Creazione e utilizzo di DataSet