domenica 21 dicembre 2008

Data Table "Inferenza" risolta

Tempo addietro avevo accennato al problema dell'infernza nell'atto di import di un file xml in una data table...

Il problema può essere risolto con molta semplicità il tutto dipende come sempre dalla situazione iniziale.

Caso 1






Field1Field2Field3
1LuendiMarzo
2MartediMarzo
3MercolediMarzo


Abbiamo eseguito DataTable.WriteXml(_FileName);
in _FileName troveremo il classico file Xml con il record di dichiarazione e i dati.

Conseiderati questi dati rileggendo i dati con DataTable.ReadXml(_FileName) non si verificheranno problemi di inferenza.

Caso 2






Field1Field2Field3
1Luendi
2Martedi
3MercolediMarzo


Abbiamo eseguito DataTable.WriteXml(_FileName);
in _FileName troveremo il classico file Xml con il record di dichiarazione e i dati.

Conseiderati questi dati rileggendo i dati con DataTable.ReadXml(_FileName) per la colonna field 3 potrebbero verificarsi problemi di infernza questo perchè solo un elemento (il 3) ha valorizzato correttamente il campo.

Se il file non è stato scritto da noi, l'unica è leggerlo prelevare per ogni nodo tutte le definizioni, e dichiarare tutte le colonne

for (int i =0 ; i < ColumnsReaded.Length-1 ; i++) { DataTable.Columns.Add(ColumnsReaded[i].ToString()); } DataTable.ReadXml(_FileName) ;

Tuttavia la soluzione migliore è evitarsi il problema alla radice....
DataTable.WriteXml(_FileName, XmlWriteMode.WriteSchema);
In questo modo qualunque sia lo schema della tabella verrà salvato nel file xml.

Nessun commento: