2008-12-22 74 views
1

同步与同步框架数据的常规代码片段是这样的:同步框架:我可以只同步我的表的一个子集吗?

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

做anynody知道的方式来同步我的表的子集。 请注意,不是每个表内的数据,而是决定哪些表将参与同步。

感谢 阿里尔

回答

3

是的,你绝对可以。

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

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

} 
2

有一些新的数据库相关的同步提供者的Sync Framework 2.0 - 他们有许多超过了以前的那些好处(请参阅比较提供商类型here)。通过这些,您可以指定应通过构建包含DbSyncTableDescriptions的DbSyncScopeDescription来同步仅用于希望同步的表的子集。

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