Freigeben über


Vorgehensweise: Angeben der Synchronisierungsart (Momentaufnahmen-, Nur-Download-, Nur-Upload- oder bidirektionale Synchronisierung)

Sync Framework unterstützt Momentaufnahmen-, Nur-Download-, Nur-Upload- und bidirektionale Synchronisierungen. Die Flexibilität von Sync Framework ermöglicht es Ihnen, für unterschiedliche Tabellen auch unterschiedliche Synchronisierungsarten festzulegen. Weitere Informationen finden Sie unter Architektur und Klassen für die Client- und Serversynchronisierung.

Dieses Thema enthält eine Übersicht über die Eigenschaften, die für jede Synchronisierungsart erforderlich sind. In den Themen in diesem Abschnitt wird beschrieben, wie Sie die verschiedenen Synchronisierungsarten konfigurieren können, und es werden Codebeispiele bereitgestellt.

Inhalt dieses Abschnitts

Eigenschaften, die die Synchronisierungsrichtung bestimmen

Welche Art der Synchronisierung für eine Tabelle verwendet wird, hängt von den Synchronisierungsbefehlen ab, die Sie im SyncAdapter und in der SyncDirection-Eigenschaft in der SyncTable festlegen. Die Synchronisierungsbefehle geben vor, welche Daten synchronisiert werden können, und die SyncDirection-Eigenschaft legt fest, welche Daten in einer bestimmten Sitzung tatsächlich synchronisiert werden. Häufig sind diese identisch, z. B. wenn Sie die bidirektionale Synchronisierung und die zugehörigen Befehle angeben. In einigen Fällen möchten Sie aber vielleicht eine Synchronisierung in nur eine Richtung vornehmen. So könnte für einen Vertriebsmitarbeiter z. B. ein Nur-Download-Zugriff auf Produktdaten ausreichen, während ein Manager auch die Möglichkeit zur Remoteaktualisierung dieser Daten haben muss. Die SyncAdapter-Befehle können für eine bidirektionale Synchronisierung eingerichtet werden, während die SyncDirection-Eigenschaft so konfiguriert wird, dass der Vertriebsmitarbeiter lediglich Daten herunterladen kann.

Setzen Sie zum Angeben der Synchronisierungsrichtung die SyncDirection-Eigenschaft auf einen der folgenden Werte der SyncDirection-Enumeration:

Geben Sie dann für jede Tabelle manuell einen Satz von SyncAdapter-Befehlen an, oder verwenden Sie zum Generieren dieser Befehle den SqlSyncAdapterBuilder. Für Nur-Download- und bidirektionale Synchronisierungen muss der Server außerdem so konfiguriert werden, dass inkrementelle Datenänderungen nachverfolgt werden. Weitere Informationen dazu finden Sie unter Änderungsnachverfolgung in der Serverdatenbank.

Beim manuellen Erstellen der Befehle legen Sie im SyncAdapter einige oder alle der folgenden Eigenschaften fest:

  • SelectIncrementalInsertsCommand. Diese Eigenschaft wird bei allen Synchronisierungstypen verwendet. Sie gibt den Befehl an, der von der Serverdatenbank Folgendes abruft: bei Momentaufnahmensynchronisierungen, Nur-Download- und bidirektionalen Synchronisierungen die Ersteinfügungen und bei Nur-Download- und bidirektionalen Synchronisierungen die inkrementellen Einfügungen. Standardmäßig ruft der Befehl bei allen Synchronisierungsarten auch das Tabellenschema aus der Serverdatenbank ab. Die Schemaerstellung und die Einfügungen werden durch den SqlCeClientSyncProvider für den Client übernommen.

  • SelectIncrementalUpdatesCommand und SelectIncrementalDeletesCommand: Diese Eigenschaften werden bei Nur-Download- und bei bidirektionalen Synchronisierungen verwendet. Sie geben die Befehle an, die Aktualisierungen und Löschungen auf dem Server abrufen, damit diese Aktualisierungen und Löschungen vom SqlCeClientSyncProvider für den Client übernommen werden können.

  • InsertCommand, UpdateCommand und DeleteCommand: Diese Eigenschaften werden bei Nur-Upload- und bei bidirektionalen Synchronisierungen verwendet. Sie geben die Befehle an, die auf dem Client vorgenommene Einfügungen, Aktualisierungen und Löschungen für den Server übernehmen.

  • SelectConflictUpdatedRowsCommand und SelectConflictDeletedRowsCommand: Diese Eigenschaften werden in der Regel bei bidirektionalen Synchronisierungen verwendet. Sie geben die Befehle an, die auf dem Server vorhandene Aktualisierungs- und Löschkonflikte abrufen. Weitere Informationen dazu finden Sie unter Vorgehensweise: Behandeln von Datenkonflikten und Fehlern.

Einer der Vorteile des manuellen Angebens der Synchronisierungsbefehle besteht darin, dass Sie mehr Kontrolle über die Befehle und darüber haben, welche Arten von Änderungen vom Client hochgeladen werden. Wenn Sie z. B. eine bidirektionale Synchronisierung vornehmen möchten, Löschungen aber nicht vom Client hochgeladen werden sollen, geben Sie einfach keinen Befehl für die DeleteCommand-Eigenschaft an. Ein Beispiel für manuelle Befehle, die komplexer als die vom SqlSyncAdapterBuilder erstellten Befehle sind, finden Sie unter Vorgehensweise: Behandeln von Datenkonflikten und Fehlern.

Wenn Sie die Befehle vom SqlSyncAdapterBuilder generieren lassen, richten Sie die SyncDirection-Eigenschaft ein. Diese Eigenschaft bestimmt, welcher der SyncAdapter-Befehle für die jeweilige Tabelle erstellt werden muss. Bei Momentaufnahmen- oder Nur-Upload-Synchronisierungen ist dies alles, was Sie festlegen müssen. Bei Nur-Download- und bidirektionalen Synchronisierungen müssen Sie außerdem Eigenschaften festlegen, die angeben, welche Spalten auf dem Server zur Änderungsnachverfolgung verwendet werden sollen und ob die Daten gefiltert werden müssen. Dabei handelt es sich um folgende Eigenschaften:

Auf der Grundlage der für diese Eigenschaften festgelegten Spalten und Filterwerte generiert der SqlSyncAdapterBuilder die entsprechenden Befehle.

Ändern der Synchronisierungsrichtung

Nachdem eine Tabelle synchronisiert wurde, können Sie eine andere Synchronisierungsrichtung angeben. Zu beachten ist dabei aber, dass Momentaufnahmensynchronisierungen keine Änderungsnachverfolgung in der Clientdatenbank aktivieren. Wenn also die Anwendung an irgendeinem Punkt die Änderungsnachverfolgung verlangen könnte, empfehlen wir, keine Momentaufnahmensynchronisierung zu konfigurieren. Wenn Sie eine Momentaufnahmensynchronisierung konfigurieren und dann zu einer anderen Synchronisierungsart wechseln, müssen Sie sich darüber im Klaren sein, dass durch die fehlende Änderungsnachverfolgung folgende Probleme auftreten können:

  • Wenn Sie eine Momentaufnahmensynchronisierung konfiguriert haben und dann zu einer Nur-Download- oder bidirektionalen Synchronisierung wechseln:

    Zeilen auf dem Server könnten erneut ausgewählt und heruntergeladen werden. Dies kann während der Downloadphase zu Konflikten führen.

  • Wenn Sie eine Momentaufnahmensynchronisierung konfiguriert haben, Änderungen in der Clientdatenbank vornehmen und dann zu einer Nur-Upload- oder bidirektionalen Synchronisierung wechseln:

    Alle Änderungen, die in der Clientdatenbank vorgenommen wurden, werden nicht hochgeladen. Wenn die Änderungen hochgeladen werden müssen, müssen Sie für jede geänderte Zeile eine Dummyaktualisierung ausführen.

  • Wenn Sie eine Momentaufnahmensynchronisierung konfiguriert haben, zu einer Nur-Upload- oder bidirektionalen Synchronisierung wechseln und dann Änderungen in der Clientdatenbank vornehmen:

    Während der Uploadphase können Konflikte auftreten.

Siehe auch

Konzepte

Programmieren von allgemeinen Client- und Serversynchronisierungsaufgaben
Tools zum Entwickeln von Anwendungen