DataSet- och XmlDataDocument-synkronisering

Med ADO.NET DataSet får du en relationsrepresentation av data. För hierarkisk dataåtkomst kan du använda DE XML-klasser som är tillgängliga i .NET Framework. Tidigare har dessa två representationer av data använts separat. .NET Framework möjliggör dock synkron åtkomst i realtid till både relations- och hierarkiska representationer av data via DataSet objektet respektive XmlDataDocument objektet.

När en DataSet synkroniseras med en XmlDataDocument fungerar båda objekten med en enda uppsättning data. Det innebär att om en ändring görs i DataSet återspeglas ändringen i XmlDataDocument och vice versa. Relationen mellan DataSet och XmlDataDocument skapar stor flexibilitet genom att tillåta ett enda program, med hjälp av en enda uppsättning data, att få åtkomst till hela tjänstepaketet som bygger på DataSet kontrollerna (t.ex. webbformulär och Windows-formulär och Visual Studio .NET-designers) samt paketen med XML-tjänster, inklusive XSL (Extensible Stylesheet Language), XSL-transformeringar (XSLT) och XML Path Language (XPath). Du behöver inte välja vilken uppsättning tjänster som ska riktas mot programmet. båda är tillgängliga.

Det finns flera sätt att synkronisera en DataSet med en XmlDataDocument. Du kan:

  • Fyll i ett DataSet med schema (dvs. en relationsstruktur) och data och synkronisera dem sedan med en ny XmlDataDocument. Detta ger en hierarkisk vy över befintliga relationsdata. Till exempel:

    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);
    
  • Fyll endast i ett DataSet med schema (till exempel en starkt skriven DataSet), synkronisera den med en XmlDataDocument och läs sedan in XmlDataDocument från ett XML-dokument. Detta ger en relationsvy över befintliga hierarkiska data. Tabellnamnen och kolumnnamnen i schemat DataSet måste matcha namnen på de XML-element som du vill att de ska synkroniseras med. Den här matchningen är skiftlägeskänslig.

    Observera att schemat för det DataSet bara behöver matcha de XML-element som du vill exponera i relationsvyn. På så sätt kan du ha ett mycket stort XML-dokument och ett mycket litet relationsfönster i dokumentet. Den XmlDataDocument bevarar hela XML-dokumentet även om DataSet bara exponerar en liten del av det. (Ett detaljerat exempel på detta finns i Synkronisera en datauppsättning med en XmlDataDocument.)

    I följande kodexempel visas stegen för att skapa ett DataSet och fylla i schemat och sedan synkronisera det med en XmlDataDocument. Observera att DataSet schemat bara behöver matcha elementen från det XmlDataDocument som du vill exponera med hjälp av 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");
    

    Du kan inte läsa in en XmlDataDocument om den är synkroniserad med en DataSet som innehåller data. Ett undantag utlöses.

  • Skapa en ny XmlDataDocument och läs in den från ett XML-dokument och få sedan åtkomst till relationsvyn för data med hjälp DataSet av egenskapen för XmlDataDocument. Du måste ange schemat för DataSet innan du kan visa någon av datan i XmlDataDocument med hjälp av DataSet. Återigen måste tabellnamnen och kolumnnamnen i schemat DataSet matcha namnen på de XML-element som du vill att de ska synkroniseras med. Den här matchningen är skiftlägeskänslig.

    I följande kodexempel visas hur du kommer åt relationsvyn för data i en 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");
    

En annan fördel med att synkronisera en XmlDataDocument med en DataSet är att integriteten av ett XML-dokument bevaras. Om DataSet fylls i från ett XML-dokument med hjälp av ReadXml, kan det, när data skrivs tillbaka som ett XML-dokument med hjälp av WriteXml, skilja sig avsevärt från det ursprungliga XML-dokumentet. Det beror på att DataSet formateringen inte bibehålls, till exempel tomt utrymme eller hierarkisk information, till exempel elementordning, från XML-dokumentet. Innehåller DataSet inte heller element från XML-dokumentet som ignorerades eftersom de inte matchade schemat för datauppsättningen. Om du synkroniserar en XmlDataDocument med en DataSet kan formatering och hierarkisk elementstruktur i det ursprungliga XML-dokumentet underhållas i XmlDataDocument, medan innehåller DataSet endast data och schemainformation som är lämplig för DataSet.

När du synkroniserar en DataSet med ett XmlDataDocument kan resultatet variera beroende på om dina DataRelation-objekt är kapslade eller inte. För mer information, se Kapslade datarelationer.

I det här avsnittet

Synkronisera en DataSet med en XmlDataDocument Visar synkronisering av en starkt typad DataSet, med minimalt schema, med en XmlDataDocument.

Utföra en XPath-fråga på en DataSet Visar hur du utför en XPath-fråga på innehållet i en DataSet.

Tillämpa en XSLT-transformering på en DataSet Visar hur du tillämpar en XSLT-transformering på innehållet i en DataSet.

Använda XML i en DataSet Beskriver hur DataSet interagerar med XML som en datakälla, inklusive inläsning och bevarande av innehållet i en DataSet som XML-data.

Kapsla datarelationer Diskuterar vikten av kapslade DataRelation objekt när de representerar innehållet i en DataSet som XML-data och beskriver hur du skapar dessa relationer.

DataSets, DataTables och DataViews Beskriver DataSet och hur du använder dem för att hantera programdata och interagera med datakällor, inklusive relationsdatabaser och XML.

XmlDataDocument Innehåller referensinformation om XmlDataDocument klassen.

Se även