Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Ett DiffGram är ett XML-format som identifierar aktuella och ursprungliga versioner av dataelement.
DataSet Använder DiffGram-formatet för att läsa in och spara innehållet och serialisera dess innehåll för transport över en nätverksanslutning. När en DataSet skrivs som ett DiffGram, fylls DiffGram med all nödvändig information för att korrekt återskapa innehållet, men inte schemat, i DataSet, inklusive kolumnvärden från både Original- och Current-radversionerna, radfelinformation och radordning.
När du skickar och hämtar en från en DataSet XML-webbtjänst används DiffGram-formatet implicit. När du läser in innehållet i en DataSet från XML med hjälp ReadXml av metoden, eller när du skriver innehållet i en DataSet i XML med hjälp WriteXml av metoden, kan du också ange att innehållet ska läsas eller skrivas som ett DiffGram. Mer information finns i Läsa in en datauppsättning från XML och Skriva datauppsättningsinnehåll som XML-data.
Även om DiffGram-formatet främst används av .NET Framework som ett serialiseringsformat för innehållet i en DataSet, kan du också använda DiffGrams för att ändra data i tabeller i en Microsoft SQL Server-databas.
Ett Diffgram genereras genom att innehållet i alla tabeller skrivs till ett <diffgram> element.
Generera ett Diffgram
Generera en lista över rottabeller (det vill: tabeller utan överordnade).
För varje tabell och dess underordnade objekt i listan skriver du ut den aktuella versionen av alla rader i det första Diffgram-avsnittet.
För varje tabell i DataSetskriver du ut den ursprungliga versionen av alla rader, om någon, i
<before>avsnittet i Diffgram.För rader som har fel skriver du felinnehållet
<errors>i avsnittet i Diffgram.
Ett Diffgram bearbetas i ordning från början av XML-filen till slutet.
Så här bearbetar du ett Diffgram
Bearbeta det första avsnittet i Diffgram som innehåller den aktuella versionen av raderna.
Bearbeta det andra eller det
<before>avsnitt som innehåller den ursprungliga radversionen av ändrade och borttagna rader.Kommentar
Om en rad har markerats som borttagen kan även borttagningsåtgärden ta bort radens underordnade objekt, beroende på
Cascadeegenskapen för den aktuella DataSet.Bearbeta avsnittet
<errors>. Ange felinformationen för den angivna raden och kolumnen för varje objekt i det här avsnittet.
Kommentar
Om du anger XmlWriteMode till Diffgram kan innehållet i målet DataSet och originalet DataSet skilja sig åt.
DiffGram-format
DiffGram-formatet är indelat i tre avsnitt: aktuella data, ursprungliga (eller "före") data och ett felavsnitt, enligt följande exempel.
<?xml version="1.0"?>
<diffgr:diffgram
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<DataInstance>
</DataInstance>
<diffgr:before>
</diffgr:before>
<diffgr:errors>
</diffgr:errors>
</diffgr:diffgram>
DiffGram-formatet består av följande datablock:
< DataInstance> Namnet på det här elementet , DataInstance, används i förklaringssyfte i den här dokumentationen. Ett DataInstance-element representerar en DataSet eller en rad i en DataTable. I stället för DataInstance skulle elementet innehålla namnet DataSet på eller DataTable. Det här blocket i DiffGram-formatet innehåller aktuella data, oavsett om de har ändrats eller inte. Ett element eller en rad som har ändrats identifieras med kommentaren diffgr:hasChanges .
<diffgr:before> Det här blocket i DiffGram-formatet innehåller den ursprungliga versionen av en rad. Element i det här blocket matchas med element i DataInstance-blocket med hjälp av kommentaren diffgr:id.
<diffgr:errors> Det här blocket i DiffGram-formatet innehåller felinformation för en viss rad i DataInstance-blocket . Element i det här blocket matchas med element i DataInstance-blocket med hjälp av kommentaren diffgr:id.
DiffGram-anteckningar
DiffGrams använder flera anteckningar för att relatera element från olika DiffGram-block som representerar olika radversioner eller felinformation i DataSet.
I följande tabell beskrivs de DiffGram-anteckningar som definieras i DiffGram-namnområdets urn:schemas-microsoft-com:xml-diffgram-v1.
| Anteckning | beskrivning |
|---|---|
id |
Används för att koppla elementen i blocken <diffgr:before> och <diffgr:errors> till elementen < i DataInstance-blocket>. Värden med kommentaren diffgr:id finns i formuläret [TableName][RowIdentifier]. Exempel: <Customers diffgr:id="Customers1">. |
parentId |
Identifierar vilket element från <DataInstance-blocket> som är det överordnade elementet i det aktuella elementet. Värden med kommentaren diffgr:parentId finns i formuläret [TableName][RowIdentifier]. Exempel: <Orders diffgr:parentId="Customers1">. |
hasChanges |
Identifierar en rad i <DataInstance-blocket> som ändrat. Anteckningen hasChanges kan ha något av följande två värden:infogad Identifierar en Added rad.modifierad Identifierar en Modified rad som innehåller en Original radversion i <diffgr:before> blocket. Observera att Deleted rader kommer att ha en Original radversion i <diffgr:before> blocket, men det kommer inte att finnas något kommenterat element i <DataInstance-blocket> . |
hasErrors |
Identifierar en rad i <DataInstance-blocket> med en RowError. Felelementet placeras i <diffgr:errors> blocket. |
Error |
Innehåller texten i RowError för ett visst element i blocket <diffgr:errors> . |
DataSet Innehåller ytterligare anteckningar när du läser eller skriver dess innehåll som ett DiffGram. I följande tabell beskrivs dessa ytterligare anteckningar, som definieras i namnområdes-urn :schemas-microsoft-com:xml-msdata.
| Anteckning | beskrivning |
|---|---|
| Radordning | Bevarar radordningen för de ursprungliga data och identifierar indexet för en rad i en viss DataTable. |
| Dold | Identifierar en kolumn som har en ColumnMapping egenskap inställd på MappingType.Hidden. Attributet skrivs i formatet msdata:hidden[ColumnName]="value". Exempel: <Customers diffgr:id="Customers1" msdata:hiddenContactTitle="Owner">.Observera att dolda kolumner endast skrivs som ett DiffGram-attribut om de innehåller data. Annars ignoreras de. |
Exempel på DiffGram
Ett exempel på DiffGram-formatet visas nedan. Det här exemplet visar resultatet av en uppdatering av en rad i en tabell innan ändringarna har checkats in. Raden med CustomerID för "ALFKI" har ändrats, men inte uppdaterats. Därför finns det en Current rad med diffgr:id för "Customers1" i <DataInstance-blocket> och en Original rad med diffgr:id för "Customers1" i <diffgr:before> blocket. Raden med CustomerID för "ANATR" innehåller en RowError, så den kommenteras med diffgr:hasErrors="true" och det finns ett relaterat element i <diffgr:errors> blocket.
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<CustomerDataSet>
<Customers diffgr:id="Customers1" msdata:rowOrder="0" diffgr:hasChanges="modified">
<CustomerID>ALFKI</CustomerID>
<CompanyName>New Company</CompanyName>
</Customers>
<Customers diffgr:id="Customers2" msdata:rowOrder="1" diffgram:hasErrors="true">
<CustomerID>ANATR</CustomerID>
<CompanyName>Ana Trujillo Emparedados y Helados</CompanyName>
</Customers>
<Customers diffgr:id="Customers3" msdata:rowOrder="2">
<CustomerID>ANTON</CustomerID>
<CompanyName>Antonio Moreno Taquera</CompanyName>
</Customers>
<Customers diffgr:id="Customers4" msdata:rowOrder="3">
<CustomerID>AROUT</CustomerID>
<CompanyName>Around the Horn</CompanyName>
</Customers>
</CustomerDataSet>
<diffgr:before>
<Customers diffgr:id="Customers1" msdata:rowOrder="0">
<CustomerID>ALFKI</CustomerID>
<CompanyName>Alfreds Futterkiste</CompanyName>
</Customers>
</diffgr:before>
<diffgr:errors>
<Customers diffgr:id="Customers2" diffgr:Error="An optimistic concurrency violation has occurred for this row."/>
</diffgr:errors>
</diffgr:diffgram>