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 を作成することにより、テーブルのサブセットを同期するように指定できます。

上記で、データのフィルター処理には関心がないと述べましたが、おそらくここで、DbSyncScopeDescription にはフィルター処理情報も含まれていることに言及する価値があります。

于 2009-12-02T21:39:35.423 に答える