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 XmlDataDocument respektive 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 låta ett enda program, med hjälp av en enda uppsättning data, få åtkomst till hela tjänstepaketet som bygger på DataSet (till exempel webbformulär och Windows Forms-kontroller och Visual Studio .NET-designers), samt sviten 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 en DataSet med schema (dvs. en relationsstruktur) och data och synkronisera den 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 i en DataSet med endast 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 datauppsättningsschemat 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 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. XmlDataDocument bevarar hela XML-dokumentet även om DataSet endast exponerar en liten del av det. (Ett detaljerat exempel på detta finns i Synkronisera en DataSet med en XmlDataDocument.)
I följande kodexempel visas stegen för att skapa en DataSet och fylla i schemat och sedan synkronisera den med en XmlDataDocument. Observera att DataSet-schemat bara behöver matcha elementen från 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 synkroniseras 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 av egenskapen DataSet för XmlDataDocument. Du måste ange schemat för DataSet innan du kan visa någon av data i XmlDataDocument med hjälp av DataSet. Återigen måste tabellnamnen och kolumnnamnen i datauppsättningsschemat 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 återgivningen av ett XML-dokument bevaras. Om DataSet fylls i från ett XML-dokument med Hjälp av ReadXml kan det skilja sig avsevärt från det ursprungliga XML-dokumentet när data skrivs tillbaka som ett XML-dokument med WriteXml. Det beror på att DataSet inte upprätthåller formatering, till exempel blanksteg eller hierarkisk information, till exempel elementordning, från XML-dokumentet. DataSet innehåller 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 DataSet endast innehåller data och schemainformation som är lämplig för DataSet.
När du synkroniserar en DataSet med en XmlDataDocument kan resultatet variera beroende på om dina DataRelation objekt är kapslade eller inte. Mer information finns i Kapsla 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.
Relaterade avsnitt
Använda XML i en DataSet
Beskriver hur DataSet interagerar med XML som datakälla, inklusive inläsning och beständighet 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 den för att hantera programdata och interagera med datakällor, inklusive relationsdatabaser och XML.
XmlDataDocument
Innehåller referensinformation om klassen XmlDataDocument .