1

使用同步框架同步数据的常规代码片段是这样的:

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

任何人都知道同步我的表子集的方法。注意不是每个表中的数据,而是决定哪些表将参与同步。

谢谢爱丽儿

4

2 回答 2

3

是的,你绝对可以。

为要同步的每个表创建一个 SyncTable,并将其添加到 SyncAgent 中的 Configuration.SyncTables。

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

} 
于 2008-12-22T15:26:28.297 回答
2

Sync Framework 2.0 中有一些新的与数据库相关的同步提供程序 - 与以前可用的同步提供程序相比,它们具有许多优点(请参阅此处的比较提供程序类型)。有了这些,您可以通过构建一个包含 DbSyncTableDescriptions 的 DbSyncScopeDescription 来指定应该同步的表子集,该 DbSyncTableDescriptions 仅适用于您希望同步的那些表。

您在上面说过您对过滤数据不感兴趣,但在这里可能值得一提的是 DbSyncScopeDescription 还包含过滤信息。

于 2009-12-02T21:39:35.423 回答