Arbeiten mit Tabellenschemas
In diesem Thema werden die verschiedenen Möglichkeiten beschrieben, die Ihnen zum Arbeiten mit in Client- und Peerdatenbanken erstellten Tabellenschemas zur Verfügung stehen.
Client- und Serversynchronisierung
Bei der ersten Synchronisierungssitzung für einen Client erstellt Sync Framework Tabellen in der Clientdatenbank. Weitere Informationen dazu finden Sie unter Vorgehensweise: Initialisieren der Clientdatenbank und Arbeiten mit dem Tabellenschema. Nach dem Erstellen dieser Tabellen sind einige Schemaänderungen zulässig.
Sync Framework gibt Schemaänderungen nicht automatisch vom Server an den Client weiter. Informationen zur Behandlung von Schemaänderungen auf dem Server finden Sie unter Bereitstellen von Anwendungen und Versionsverwaltung. In der Clientdatenbank werden die folgenden Schemaänderungen unterstützt:
Löschen von Tabellen: Das Verhalten bei der nächsten Synchronisierung hängt von dem Wert ab, den Sie für CreationOption angegeben haben. Wenn die Tabelle nicht vom Client übernommen werden soll, entfernen Sie sie aus SyncTableCollection. Wenn Sie eine Tabelle löschen, für die die Änderungsnachverfolgung aktiviert ist, löschen Sie gleichzeitig auch die Systemtabelle, in der Löschvorgänge für diese Tabelle nachverfolgt werden. Sämtliche Löschvorgänge, die seit der letzten Synchronisierung ausgeführt wurden, werden damit nicht auf den Server hochgeladen.
Hinzufügen neuer Spalten
Löschen von Spalten für Tabellen, die an Momentaufnahmensynchronisierungen beteiligt sind; Diese Änderung wird bei anderen Synchronisierungsarten nicht unterstützt
Hinzufügen, Löschen und Umbenennen von Indizes
Hinzufügen, Löschen und Umbenennen von Primärschlüsseln und anderen Einschränkungen
Ändern von Standards
Alle anderen Änderungen werden nicht unterstützt und können Synchronisierungsfehler verursachen.
In einigen Anwendungen sind das Schema auf dem Client und das Schema auf dem Server nicht identisch. Im Folgenden erhalten Sie eine Übersicht über das Verhalten einer Tabelle und des ADO.NET-Datasets, mit dem Sync Framework diese Tabelle auf dem Client aktualisiert:
Wenn das Dataset Column1 und Column2 und die Tabelle Column1, Column2 und Column3 enthält, werden die Werte in Column1 und Column2 übernommen, und Column3 wird auf den Standardwert (bzw. NULL, sofern kein Standardwert vorgegeben ist) festgelegt.
Wenn das Dataset Column1, Column2 und Column3 und die Tabelle Column1 und Column2 enthält, werden die Werte in Column1 und Column2 übernommen, und Column3 wird ignoriert.
Wenn das Dataset Column1, Column2 und Column3 und die Tabelle Column1, Column2 und Column4 enthält, werden die Werte in Column1 und Column2 übernommen, Column3 wird auf den Standardwert (bzw. NULL, sofern kein Standardwert vorgegeben ist) festgelegt, und Column4 wird ignoriert.
Peer-to-Peer-Synchronisierung
Bei der Peer-to-Peer-Synchronisierung wird keine automatische Initialisierung von Peerdatenbanken durchgeführt und keine Nachverfolgungsinfrastruktur auf den einzelnen Peers erstellt. Informationen zum Initialisieren von Schema und Daten finden Sie unter „Initialisieren einer Serverdatenbank“ in Vorgehensweise: Konfigurieren und Ausführen der Synchronisierung für die Zusammenarbeit (Nicht-SQL Server). Es bestehen keine Einschränkungen bei Schemaänderungen an Basistabellen in Peerdatenbanken. Allerdings müssen Anwendungen sicherstellen, dass die Befehle, die Änderungen auswählen und übernehmen, aktualisiert werden, wenn Schemaänderungen auftreten. Wenn Sie beispielsweise einer Tabelle eine Spalte hinzufügen, muss der Befehl zum Einfügen von Änderungen in diese Tabelle so aktualisiert werden, dass die neue Spalte enthalten ist.
In Peer-to-Peer-Szenarien kann das Schema je nach Peerdatenbank unterschiedlich sein. Zum Beispiel kann ein Tabellenschema auf dem ersten Peer numerische Spaltennamen verwenden, die schwierig zu lesen sind. Sie können mithilfe des DbSyncColumnMapping-Objekts und des DbSyncColumnMappingCollection-Objekts den Spalten Namen zuordnen, die für andere Peers einfacher zu lesen sind.
Siehe auch
Konzepte
Überlegungen zum Entwurf und zur Bereitstellung von Anwendungen