Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A DiffGram egy XML-formátum, amely az adatelemek aktuális és eredeti verzióit azonosítja. A DataSet DiffGram formátum használatával betölti és megőrzi a tartalmát, és szerializálja a tartalmát egy hálózati kapcsolaton keresztüli átvitelhez. Ha egy DataSet DiffGram-ként van megírva, feltölti a DiffGramot az összes szükséges információval, hogy pontosan újra lehessen hozni a tartalmat, bár nem a sémát, beleértve DataSet a Original és Current sorverziókból származó oszlopértékeket, a sorhibákat és a sorsorrendet is.
XML-webszolgáltatásból való DataSet küldéskor és lekéréskor a DiffGram formátum implicit módon lesz használva. Ha egy XML-fájl tartalmát DataSet a metódussal ReadXml tölti be, vagy ha egy XML-fájl tartalmát DataSet a metódussal WriteXml írja be, megadhatja, hogy a tartalom DiffGramként legyen olvasható vagy írható. További információ: Adathalmaz betöltése XML-ből és adathalmaz tartalmának XML-adatként való írása.
Bár a DiffGram formátumot elsősorban a .NET-keretrendszer használják szerializálási formátumként egy DataSetadott tartalomhoz, a DiffGrams használatával módosíthatja a Microsoft SQL Server-adatbázisok tábláiban lévő adatokat.
A Diffgram úgy jön létre, hogy az összes tábla tartalmát egy <diffgram> elembe írja.
Diffgram létrehozása
Hozzon létre egy listát a gyökértáblákról (azaz a szülő nélküli táblákról).
A listában szereplő összes tábla és azok leszármazottai esetében írja ki az első Diffgram-szakasz összes sorának aktuális verzióját.
A Diffgram DataSet szakaszában írja ki minden
<before>tábla összes sorának eredeti verzióját, ha van ilyen.A hibákat tartalmazó sorok esetében írja be a hibatartalmat a
<errors>Diffgram szakaszba.
A Diffgram feldolgozása az XML-fájl elejétől a végéig történik.
Diffgram feldolgozása
Dolgozza fel a sorok aktuális verzióját tartalmazó Diffgram első szakaszát.
Dolgozza fel a módosított és törölt sorok eredeti sorverzióját tartalmazó második vagy a
<before>szakaszt.Megjegyzés
Ha egy sor törölve van jelölve, a törlési művelet az aktuális
Cascadetulajdonságtól függően DataSet a sor leszármazottait is törölheti.A
<errors>szakasz feldolgozása. Adja meg a szakasz egyes elemeihez tartozó megadott sor és oszlop hibaadatait.
Megjegyzés
Ha a XmlWriteMode értékét Diffgramra állítja, a cél DataSet és az eredeti DataSet tartalma eltérhet.
DiffGram formátum
A DiffGram formátum három részre van osztva: az aktuális adatokra, az eredeti (vagy "korábbi") adatokra, valamint egy hibaszakaszra, ahogyan az az alábbi példában látható.
<?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>
A DiffGram formátum a következő adatblokkokból áll:
< DataInstance> Ennek az elemnek a neve, a DataInstance a jelen dokumentációban magyarázati célokra szolgál. A DataInstance elem egy DataSet vagy több sort DataTablejelöl. A DataInstance helyett az elem a DataSet vagy DataTable nevét tartalmazná. A DiffGram formátum ezen blokkja tartalmazza az aktuális adatokat, függetlenül attól, hogy módosították-e vagy sem. A módosított elemet vagy sort a diffgr:hasChanges széljegyzet azonosítja.
<diffgr:before> Ez a blokk a DiffGram formátum tartalmazza a sor eredeti verzióját. A blokk elemei a diffgr:id széljegyzet használatával megegyeznek a DataInstance blokk elemeivel.
<diffgr:errors> A DiffGram formátumnak ez a blokkja a DataInstance blokk egy adott sorának hibainformációit tartalmazza. A blokk elemei a diffgr:id széljegyzet használatával megegyeznek a DataInstance blokk elemeivel.
DiffGram-széljegyzetek
A DiffGrams több széljegyzetet használ a különböző DiffGram-blokkok elemeinek összekapcsolására, amelyek a különböző sorverziókat vagy hibainformációkat jelölik a DataSet.
Az alábbi táblázat a DiffGram névtér urn:schemas-microsoft-com:xml-diffgram-v1 fájljában definiált DiffGram-széljegyzeteket ismerteti.
| Annotáció | Leírás |
|---|---|
id |
A [TableName][RowIdentifier] formában vannak. Például: <Customers diffgr:id="Customers1"> |
parentId |
Azonosítja, hogy a <DataInstance> blokk melyik eleme az aktuális elem szülőeleme. A diffgr:parentId széljegyzetet tartalmazó értékek [TableName][RowIdentifier] formában vannak. Például: <Orders diffgr:parentId="Customers1"> |
hasChanges |
A DataInstance blokk egy sorát <azonosítja módosítottként.> A hasChanges széljegyzet a következő két érték egyikével rendelkezhet:Behelyezett Azonosít egy Added sort.módosított Az Modified blokkban egy Original sorverziót tartalmazó <diffgr:before> sort azonosítja. Vegye figyelembe, hogy Deleted a soroknak lesz egy Original sorverziója a <diffgr:before> blokkban, de a <DataInstance> blokkban nem lesz széljegyzetes elem. |
hasErrors |
Meghatároz egy sort a <DataInstance> blokkon belül egy RowError hibával. A hibaelem a <diffgr:errors> blokkba kerül. |
Error |
Egy adott elem RowError szövegét tartalmazza a <diffgr:errors> blokkban. |
A DataSet tartalom DiffGramként való olvasása vagy írása során további megjegyzéseket is tartalmaz. Az alábbi táblázat az urn:schemas-microsoft-com:xml-msdata névtérben definiált további széljegyzeteket ismerteti.
| Annotáció | Leírás |
|---|---|
| RowOrder | Megőrzi az eredeti adatok sorsorrendét, és azonosítja az adott DataTablesor indexét. |
| Rejtett | Egy oszlopot ColumnMapping a MappingType.Hidden tulajdonságra állított tulajdonságként azonosít. Az attribútum msdata:hidden [ColumnName]="value" formátumban van megírva. Például: <Customers diffgr:id="Customers1" msdata:hiddenContactTitle="Owner">Vegye figyelembe, hogy a rejtett oszlopok írása csak DiffGram-attribútumként történik, ha adatokat tartalmaznak. Ellenkező esetben a rendszer figyelmen kívül hagyja őket. |
DiffGram-minta
Alább látható egy példa a DiffGram formátumra. Ez a példa azt mutatja, hogy hogyan néz ki egy frissítés eredménye egy tábla során azelőtt, hogy a módosításokat véglegesítenék. Az "ALFKI" ügyfélazonosítóval rendelkező sor módosult, de nem frissült. Ennek eredményeképpen a Current< blokkban található egy "Customers1" diffgr:id azonosítójú sor, a blokkban >Original pedig egy "Customers1" <diffgr:before> sor. Az "ANATR" ügyfélazonosítójú sor tartalmaz egy RowErrort, így meg van jelölve diffgr:hasErrors="true"-el, és van egy kapcsolódó elem a <diffgr:errors> blokkban.
<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>