同步框架:我可以仅同步我的表的一部分吗?

使用同步框架同步数据的常规代码段如下:

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

anynody知道一种同步我的表子集的方法。 请注意不是每个表中的数据,而是决定同步中涉及哪些表。

谢谢阿里尔

是的,你绝对可以。

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

我发现Bill Ryan的这篇文章很有启发性。 他介绍了如何过滤每个表中的数据,但是有些内容可以满足您的需求。

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(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中有一些与数据库相关的新同步提供程序 – 它们具有许多优于以前可用的优点(请参阅此处比较提供程序类型)。 通过这些,您可以通过构建仅包含要同步的表的DbSyncTableDescriptions的DbSyncScopeDescription来指定应该同步表的子集。

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