共用方式為


HOW TO:指定快照集、下載、上傳及雙向同步處理

Sync Framework 支援快照集 (Snapshot)、下載的、上傳的和雙向 (Bidirectional) 的同步處理。因為 Sync Framework 提供的彈性,您可以為不同的資料表指定不同類型的同步處理。如需詳細資訊,請參閱用戶端與伺服器同步處理的架構與類別

本主題提供在每種類型的同步處理中所需要的屬性之概觀。本節主題描述如何設定同步處理的類型,並提供程式碼範例。

本章節內容

判斷同步處理方向的屬性

適用此類型的同步處理的資料表,會以您在 SyncAdapter 上所設定的同步處理命令,以及 SyncTable 上的 SyncDirection 屬性為基礎。同步處理命令會決定應該同步 (Synchronize) 哪些資料,而 SyncDirection 屬性則決定在特定工作階段中要實際同步哪些資料。這些通常是相同的:例如,您指定了雙向同步處理和支援的命令。但是在某些案例中,您可能想要只同步一個方向。例如,銷售人員可能對於產品資料只需要僅限下載的存取,但若是經理,可能就會需要遠端更新此資料的能力。SyncAdapter 命令可以指定為雙向同步處理。但是,它的 SyncDirection 屬性對銷售人員會設定成僅限下載。

若要指定同步處理方向,請將 SyncDirection 屬性設定為下列 SyncDirection 列舉型別值的其中之一:

然後針對每個資料表,手動指定 SyncAdapter 的命令集,或使用 SqlSyncAdapterBuilder 產生這些命令。針對僅限下載及雙向的同步處理,伺服器必須也設定為追蹤累加資料變更。如需詳細資訊,請參閱 追蹤伺服器資料庫中的變更

如果您手動建立命令,則要在 SyncAdapter 上設定部分或全部的下列屬性:

手動指定同步處理命令的優點之一,就是您對於命令以及要上傳何種變更到用戶端,有更大的控制權。例如,如果您想要執行雙向同步處理,但又不想要從用戶端上傳刪除,那麼就不要為 DeleteCommand 屬性指定命令。如需比由 SqlSyncAdapterBuilder 所產生的命令更為複製的手動命令之範例,請參閱 HOW TO:處理資料衝突和錯誤

如果您讓 SqlSyncAdapterBuilder 產生命令,請設定 SyncDirection 屬性。此屬性會判斷要用哪個 SyncAdapter 命令為資料表產生資料。快照集和僅限上傳的同步處理中,您只需要設定這些。但在僅限下載和雙向的同步處理中,您必須也為識別伺服器上的哪個資料行要用於追蹤變更,以及該資料是否需要經過篩選來進行設定。這些屬性如下:

根據在這些屬性中所指定的資料行和篩選值,SqlSyncAdapterBuilder 會產生適當的命令。

變更同步處理的方向

在同步了一個資料表後,您可以指定不同的同步處理方向。不過,快照集同步處理不能在用戶端資料庫上啟用變更追蹤。如果您預先考慮到應用程式將會需要在某個時候進行資料的變更追蹤,我們建議您不要設定快照集同步處理。如果您設定快照集同步處理,然後變更為另一類型的同步處理,您必須小心下列與變更追蹤有關的問題:

  • 如果您已設定快照集同步處理,然後變更為僅限下載或雙向同步處理:

    可能會再次選取並下載伺服器端的資料列。這樣就會在下載階段中造成衝突。

  • 如果您已設定快照集同步處理、在用戶端資料庫中進行變更,然後變更為僅限上傳或雙向同步處理:

    不會上傳在用戶端資料庫中進行的任何變更。如果您需要上傳這些變更,您必須為每個變更的資料列進行「虛擬更新」(Dummy Update)。

  • 如果您已設定快照集同步處理、變更為僅限上傳或雙向同步處理,然後在用戶端資料庫中進行變更:

    在上傳階段期間可能會發生衝突。

請參閱

概念

撰寫一般用戶端和伺服器同步處理工作
協助您開發應用程式的工具