Sync Framework: Можно ли синхронизировать только часть моих таблиц?

Обычный фрагмент кода для синхронизации данных с платформой синхронизации:

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

У кого-нибудь есть способ синхронизации подмножества моих таблиц. Обратите внимание не на данные внутри каждой таблицы, но решите, какие таблицы будут задействованы в синхронизации.

Спасибо ариэль

2 ответа

Решение

Да, вы можете.

Создайте SyncTable для каждой таблицы, которую вы хотите синхронизировать, и добавьте ее в Configuration.SyncTables в SyncAgent.

Я нашел эту статью от Билла Райана очень поучительной. Он рассказывает, как фильтровать данные в каждой таблице, но там есть вещи, которые делают то, что вы ищете.

Образец от Билла Райана:

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"));
     }

} 

В Sync Framework 2.0 появилось несколько новых провайдеров синхронизации, связанных с базой данных, которые имеют ряд преимуществ по сравнению с ранее доступными (см. Раздел Сравнение типов провайдеров здесь). С их помощью вы можете указать, что подмножество таблиц должно быть синхронизировано путем создания DbSyncScopeDescription, которая содержит DbSyncTableDescription только для тех таблиц, которые вы хотите синхронизировать.

Вы заявили выше, что не заинтересованы в фильтрации данных, но, вероятно, здесь стоит упомянуть, что DbSyncScopeDescription также содержит информацию о фильтрации.

Другие вопросы по тегам