使用同步框架同步数据的常规代码段是:
LocalDBSyncAgent syncAgent = new LocalDBSyncAgent();
Microsoft.Synchronization.Data.SyncStatistics syncStats = syncAgent.Synchronize();
anynody知道一种同步我的表子集的方法。 请注意不是每个表中的数据,而是决定同步中涉及哪些表。
由于 爱丽儿
答案 0 :(得分:3)
是的,你绝对可以。
为要同步的每个表创建一个SyncTable,并将其添加到SyncAgent中的Configuration.SyncTables。
我发现Bill Ryan的this article非常有启发性。他介绍了如何过滤每个表中的数据,但是那里有些东西能够满足您的需求。
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"));
}
}
答案 1 :(得分:2)
Sync Framework 2.0中有一些与数据库相关的新同步提供程序 - 它们比以前提供的程序具有许多优点(请参阅比较提供程序类型here)。通过这些,您可以通过构建仅包含要同步的表的DbSyncTableDescriptions的DbSyncScopeDescription来指定应该同步表的子集。
您在上面说过,您对过滤数据不感兴趣,但在此可能值得一提的是,DbSyncScopeDescription也包含过滤信息。