2008-12-22 5 views
1

L'extrait de code régulier de la synchronisation des données avec le cadre de synchronisation est la suivante:Sync Framework: Puis-je synchroniser uniquement un sous-ensemble de mes tables?

LocalDBSyncAgent syncAgent = new LocalDBSyncAgent(); 
Microsoft.Synchronization.Data.SyncStatistics syncStats = syncAgent.Synchronize(); 

Do anynody connaît un moyen de synchroniser un sous-ensemble de mes tableaux. Notez pas les données à l'intérieur de chaque table, mais le décider quelles tables seraient impliquées dans la synchronisation.

Merci Ariel

Répondre

3

Oui, vous pouvez absolument.

Créez une table de synchronisation pour chaque table que vous souhaitez synchroniser et ajoutez-la aux Configuration.SyncTables dans SyncAgent.

J'ai trouvé this article de Bill Ryan très instructif. Il explique comment filtrer les données dans chaque table, mais il y a des choses qui font ce que vous cherchez.

échantillon de Bill Ryan:

public class SampleSyncAgent : Microsoft.Synchronization.SyncAgent 
{ 

    public SampleSyncAgent() 
    { 

     SqlCeClientSyncProvider clientSyncProvider = new SqlCeClientSyncProvider(Properties.Settings.Default.ClientConnString, true); 
     this.LocalProvider = clientSyncProvider; 
       clientSyncProvider.ChangesApplied += new EventHandler<ChangesAppliedEventArgs>(clientSyncProvider_ChangesApplied);  

     this.RemoteProvider = new SampleServerSyncProvider();  

     SyncTable customerSyncTable = new SyncTable("Customer"); 
     customerSyncTable.CreationOption = TableCreationOption.DropExistingOrCreateNewTable; 
     customerSyncTable.SyncDirection = SyncDirection.DownloadOnly;** 

     this.Configuration.SyncTables.Add(customerSyncTable); 
     this.Configuration.SyncParameters.Add(new SyncParameter("@CustomerName", "Sharp Bikes")); 
    } 

} 
2

Il y a quelques nouveaux fournisseurs de synchronisation liés à la base de données dans Sync Framework 2.0 - ils ont un certain nombre d'avantages par rapport ceux qui étaient auparavant disponibles (voir Comparaison des types de fournisseurs here). Avec ceux-ci, vous pouvez spécifier qu'un sous-ensemble de tables doit être synchronisé en créant une DbSyncScopeDescription contenant DbSyncTableDescriptions uniquement pour les tables que vous souhaitez synchroniser.

Vous avez indiqué ci-dessus que le filtrage des données ne vous intéresse pas, mais il est probablement utile de mentionner ici qu'une DbSyncScopeDescription contient également des informations de filtrage.