Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Thema enthält eine kurze Einführung in DiffGrams.
DiffGram-Format
Dies ist das allgemeine DiffGram-Format:
<?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>
Das DiffGram-Format besteht aus folgenden Blöcken:
<DataInstance>
Der Name dieses Elements, DataInstance, wird zu Erklärungszwecken in dieser Dokumentation verwendet. Wenn z. B. das DiffGram aus einem Dataset in .NET Framework generiert wurde, wird der Wert der Name-Eigenschaft des Datasets als Name dieses Elements verwendet. Dieser Block enthält alle relevanten Daten nach der Änderung, möglicherweise auch Daten, die nicht geändert wurden. Die DiffGram-Verarbeitungslogik ignoriert die Elemente in diesem Block, für die das diffgr:hasChanges-Attribut nicht angegeben ist.
<diffgr:before>
Dieser optionale Block enthält die ursprünglichen Datensatzinstanzen (Elemente), die aktualisiert oder gelöscht werden müssen. Alle Datenbanktabellen, die vom DiffGram geändert (aktualisiert oder gelöscht) werden, müssen als Elemente der obersten Ebene im <vorherigen> Block angezeigt werden.
<diffgr:errors>
Dieser optionale Block wird von der DiffGram-Verarbeitungslogik ignoriert.
DiffGram-Anmerkungen
Diese Anmerkungen werden im DiffGram-Namespace "urn:schemas-microsoft-com:xml-diffgram-01" definiert:
id
Dieses Attribut wird verwendet, um die Elemente in den <Blöcken "before> " und " <DataInstance> " zu koppeln.
hasChanges
Für einen Einfüge- oder Aktualisierungsvorgang muss das DiffGram dieses Attribut mit dem eingefügten oder geänderten Wert angeben. Wenn dieses Attribut nicht vorhanden ist, wird das entsprechende Element in der <DataInstance> von der Verarbeitungslogik ignoriert, und es werden keine Aktualisierungen ausgeführt. Arbeitsbeispiele finden Sie unter DiffGram Examples (SQLXML 4.0).For working samples, see DiffGram Examples (SQLXML 4.0).
parentID
Dieses Attribut wird verwendet, um beziehungen zwischen den Elementen im DiffGram anzugeben. Dieses Attribut wird nur im <vorherigen> Block angezeigt. Sie wird von SQLXML beim Anwenden von Updates verwendet. Die Beziehung zwischen übergeordneten und untergeordneten Elementen wird verwendet, um die Reihenfolge zu bestimmen, in der die Elemente im DiffGram verarbeitet werden.
Grundlegendes zur DiffGram-Verarbeitungslogik
Die DiffGram-Verarbeitungslogik verwendet bestimmte Regeln, um zu bestimmen, ob ein Vorgang ein Einfüge-, Aktualisierungs- oder Löschvorgang ist. Diese Regeln werden in der folgenden Tabelle beschrieben.
| Vorgang | BESCHREIBUNG |
|---|---|
| Einfügen | Ein DiffGram gibt einen Einfügevorgang an, wenn ein Element im <DataInstance-Block> angezeigt wird, aber nicht im entsprechenden <Vorblock> , und das diffgr:hasChanges-Attribut wird (diffgr:hasChanges=insert) für das Element angegeben. In diesem Fall fügt das DiffGram die Datensatzinstanz ein, die <im DataInstance-Block> in die Datenbank angegeben ist. Wenn das diffgr:hasChanges-Attribut nicht angegeben ist, wird das Element von der Verarbeitungslogik ignoriert, und es wird kein Einfügen ausgeführt. Arbeitsbeispiele finden Sie unter DiffGram Examples (SQLXML 4.0).For working samples, see DiffGram Examples (SQLXML 4.0). |
| Aktualisierung | Das DiffGram gibt einen Aktualisierungsvorgang an, wenn ein Element im <vorherigen> Block vorhanden ist, für das ein entsprechendes Element im <DataInstance-Block> vorhanden ist (d. h. beide Elemente haben ein diffgr:id-Attribut mit demselben Wert) und das diffgr:hasChanges-Attribut wird mit dem wert angegeben, der für das Element im <DataInstance-Block>geändert wurde. Wenn das diffgr:hasChanges-Attribut für das Element im <DataInstance-Block> nicht angegeben ist, wird ein Fehler von der Verarbeitungslogik zurückgegeben. Arbeitsbeispiele finden Sie unter DiffGram Examples (SQLXML 4.0).For working samples, see DiffGram Examples (SQLXML 4.0). Wenn diffgr:parentID im <before-Block> angegeben wird, werden die beziehungen zwischen den übergeordneten Elementen, die durch parentID angegeben werden, verwendet, um die Reihenfolge zu bestimmen, in der Datensätze aktualisiert werden. |
| Löschen | Ein DiffGram gibt einen Löschvorgang an, wenn ein Element im <vorherigen> Block, aber nicht im entsprechenden <DataInstance-Block> angezeigt wird. In diesem Fall löscht das DiffGram die Datensatzinstanz, die <im before-Block> aus der Datenbank angegeben ist. Arbeitsbeispiele finden Sie unter DiffGram Examples (SQLXML 4.0).For working samples, see DiffGram Examples (SQLXML 4.0). Wenn "diffgr:parentID " im <vorherigen> Block angegeben ist, werden die beziehungen zwischen übergeordneten und untergeordneten Elementen, die durch parentID angegeben werden, verwendet, um die Reihenfolge zu bestimmen, in der Datensätze gelöscht werden. |
Hinweis
Parameter können nicht an DiffGrams übergeben werden.