Condividi tramite


Sincronizzazione di DataSet e XmlDataDocument

Il ADO.NET DataSet fornisce una rappresentazione relazionale dei dati. Per l'accesso ai dati gerarchici, è possibile usare le classi XML disponibili in .NET Framework. Storicamente, queste due rappresentazioni dei dati sono state usate separatamente. Tuttavia, .NET Framework consente l'accesso in tempo reale e sincrono rispettivamente alle rappresentazioni relazionali e gerarchiche dei dati tramite l'oggetto DataSet e l'oggetto XmlDataDocument .

Quando un oggetto DataSet viene sincronizzato con un xmlDataDocument, entrambi gli oggetti utilizzano un singolo set di dati. Ciò significa che se viene apportata una modifica al DataSet, la modifica verrà riflessa in XmlDataDocument e viceversa. La relazione tra DataSet e XmlDataDocument crea una grande flessibilità consentendo a una singola applicazione, usando un singolo set di dati, di accedere all'intera suite di servizi compilati intorno DataSet a (ad esempio i controlli Web Form e Windows Form e le finestre di progettazione .NET di Visual Studio), nonché la suite di servizi XML, tra cui Extensible Stylesheet Language (XSL), Trasformazioni XSL (XSLT) e XPath (XML Path Language). Non è necessario scegliere il set di servizi di destinazione con l'applicazione; entrambi sono disponibili.

Esistono diversi modi per sincronizzare un oggetto con DataSet. È possibile:

  • Riempire un DataSet con uno schema (ovvero una struttura relazionale) e i dati e quindi sincronizzarlo con un nuovo XmlDataDocument. In questo modo viene fornita una visualizzazione gerarchica dei dati relazionali esistenti. Per esempio:

    Dim dataSet As DataSet = New DataSet
    
    ' Add code here to populate the DataSet with schema and data.
    
    Dim xmlDoc As XmlDataDocument = New XmlDataDocument(dataSet)
    
    DataSet dataSet = new DataSet();
    
    // Add code here to populate the DataSet with schema and data.
    
    XmlDataDocument xmlDoc = new XmlDataDocument(dataSet);
    
  • Popolare un DataSet oggetto con solo schema (ad esempio un DataSet fortemente tipizzato), sincronizzarlo con un XmlDataDocument e quindi caricare da XmlDataDocument un documento XML. In questo modo viene fornita una visualizzazione relazionale dei dati gerarchici esistenti. I nomi delle tabelle e delle colonne nello DataSet schema devono corrispondere ai nomi degli elementi XML con cui devono essere sincronizzati. Questa corrispondenza fa distinzione tra maiuscole e minuscole.

    Si noti che lo schema del DataSet deve corrispondere solo agli elementi XML che si desidera esporre nella visualizzazione relazionale. In questo modo, è possibile avere un documento XML molto grande e una "finestra" relazionale molto piccola su tale documento. XmlDataDocument Mantiene l'intero documento XML anche se ne DataSet espone solo una piccola parte. Per un esempio dettagliato di questo tipo, vedere Sincronizzazione di un dataset con xmlDataDocument.

    Nell'esempio di codice seguente vengono illustrati i passaggi per la creazione di un DataSet oggetto e il popolamento dello schema, quindi la sincronizzazione con xmlDataDocument. Si noti che lo DataSet schema deve corrispondere solo agli elementi dell'oggetto XmlDataDocument che si desidera esporre usando l'oggetto DataSet.

    Dim dataSet As DataSet = New DataSet
    
    ' Add code here to populate the DataSet with schema, but not data.
    
    Dim xmlDoc As XmlDataDocument = New XmlDataDocument(dataSet)
    xmlDoc.Load("XMLDocument.xml")
    
    DataSet dataSet = new DataSet();
    
    // Add code here to populate the DataSet with schema, but not data.
    
    XmlDataDocument xmlDoc = new XmlDataDocument(dataSet);
    xmlDoc.Load("XMLDocument.xml");
    

    Non è possibile caricare un oggetto XmlDataDocument se è sincronizzato con un DataSet oggetto che contiene dati. Verrà generata un'eccezione.

  • Creare un nuovo XmlDataDocument oggetto e caricarlo da un documento XML e quindi accedere alla visualizzazione relazionale dei dati usando la DataSet proprietà di XmlDataDocument. È necessario impostare lo schema dell'oggetto DataSet prima di poter visualizzare uno qualsiasi dei dati in usando l'oggetto XmlDataDocumentDataSet. Anche in questo caso, i nomi delle tabelle e delle colonne nello DataSet schema devono corrispondere ai nomi degli elementi XML con cui sincronizzarli. Questa corrispondenza fa distinzione tra maiuscole e minuscole.

    Nell'esempio di codice seguente viene illustrato come accedere alla visualizzazione relazionale dei dati in un xmlDataDocument.

    Dim xmlDoc As XmlDataDocument = New XmlDataDocument
    Dim dataSet As DataSet = xmlDoc.DataSet
    
    ' Add code here to create the schema of the DataSet to view the data.
    
    xmlDoc.Load("XMLDocument.xml")
    
    XmlDataDocument xmlDoc = new XmlDataDocument();
    DataSet dataSet = xmlDoc.DataSet;
    
    // Add code here to create the schema of the DataSet to view the data.
    
    xmlDoc.Load("XMLDocument.xml");
    

Un altro vantaggio della sincronizzazione di un XmlDataDocument con un DataSet è che la fedeltà di un documento XML viene mantenuta. Se l'oggetto DataSet viene popolato da un documento XML tramite ReadXml, quando i dati vengono riscritti come documento XML utilizzando WriteXml, possono differire notevolmente rispetto al documento XML originale. Ciò è dovuto al fatto che la DataSet non mantiene la formattazione, come spazi bianchi, o le informazioni gerarchiche, come l'ordine degli elementi, dal documento XML. Inoltre DataSet , non contiene elementi del documento XML ignorati perché non corrispondono allo schema del set di dati. La sincronizzazione di un XmlDataDocument oggetto con un DataSet consente la formattazione e la struttura gerarchica degli elementi del documento XML originale da gestire in XmlDataDocument, mentre DataSet contiene solo dati e informazioni sullo schema appropriate per l'oggetto DataSet.

Quando si sincronizza un oggetto con DataSet, i risultati possono variare a seconda che gli DataRelation oggetti siano annidati o meno. Per altre informazioni, vedere Annidamento di DataRelations.

In questa sezione

Sincronizzazione di un set di dati con xmlDataDocument Illustra la sincronizzazione di un dataset fortemente tipizzato, con uno schema minimo, con xmlDataDocument.

Esecuzione di una query XPath in un set di dati Illustra l'esecuzione di una query XPath sul contenuto di un oggetto DataSet.

Applicazione di una trasformazione XSLT a un set di dati Illustra l'applicazione di una trasformazione XSLT al contenuto di un oggetto DataSet.

Uso di XML in un oggetto DataSet Descrive in che modo l'oggetto DataSet interagisce con XML come origine dati, incluso il caricamento e la persistenza del contenuto di un oggetto DataSet come dati XML.

Annidamento di DataRelations Illustra l'importanza degli oggetti annidati DataRelation quando si rappresenta il contenuto di un oggetto DataSet come dati XML e descrive come creare queste relazioni.

DataSets, DataTables e DataViews Descrive DataSet e come usarli per gestire i dati dell'applicazione e per interagire con le origini dati, inclusi database relazionali e XML.

XmlDataDocument Contiene informazioni di riferimento sulla XmlDataDocument classe .

Vedere anche