如何指定快照同步、下载同步、上载同步和双向同步

Sync Services for ADO.NET 支持快照同步、下载同步、上载同步和双向同步。由于 Sync Services 具有的灵活性,可以为不同的表指定不同的同步类型。有关更多信息,请参见用于客户端与服务器同步的体系结构和类

本主题概述了每种同步类型必需的属性。本节中的主题介绍如何配置同步类型,并提供代码示例。

本节内容

确定同步方向的属性

用于表的同步类型取决于对 SyncTableSyncAdapterSyncDirection 属性设置的同步命令。同步命令决定了要同步的数据,而 SyncDirection 属性决定在某个特定会话中实际同步哪些数据。它们经常是相同的:例如,您会指定双向同步以及支持它的命令。但是,在某些情况下,您可能只希望在一个方向上进行同步。例如,销售人员可能需要以仅限下载的方式访问产品数据,而经理可能还需要远程更新这些数据的能力。可以为双向同步指定 SyncAdapter 命令。但是,对于销售人员,SyncDirection 属性被设置为仅限下载。

若要指定同步方向,请将 SyncDirection 属性设置为 SyncDirection 枚举的以下值之一:

然后,对于每个表,请为 SyncAdapter 手动指定一组命令,或者使用 SqlSyncAdapterBuilder 生成这些命令。对于仅限下载同步和双向同步,还必须将服务器配置为跟踪增量数据变更。有关更多信息,请参见跟踪服务器数据库中的变更

如果是手动创建命令,可以部分或全部地设置 SyncAdapter 的以下属性:

手动指定同步命令的优点之一是:可以对命令以及要从客户端上载的变更类型拥有更多的控制。例如,如果想要执行双向同步,但是不想从客户端中上载删除,可以不为 DeleteCommand 属性指定命令。有关比 SqlSyncAdapterBuilder 生成的命令更为复杂的手动命令的示例,请参见如何处理数据冲突和错误

如果使用 SqlSyncAdapterBuilder 生成命令,请设置 SyncDirection 属性。此属性决定了要为表生成哪些 SyncAdapter 命令。对于快照同步或仅限上载同步,这便是您需要做的所有工作。对于仅限下载同步和双向同步,还必须设置用于标识使用服务器中的哪些列来跟踪变更的属性,以及用于控制是否对数据进行筛选的属性。这些属性如下所示:

基于为这些属性指定的列和筛选值,SqlSyncAdapterBuilder 可生成相应的命令。

变更同步方向

在同步表之后,可以指定一个不同的同步方向。但是,快照同步不会在客户端数据库中启用变更跟踪。如果您预计应用程序在某些时候需要跟踪数据变更,建议不要配置快照同步。如果配置了快照同步,然后再变更为另一种同步类型,必须了解与变更跟踪相关的以下问题:

  • 如果配置了快照同步,然后变更为仅下载同步或双向同步:

    可能会再次选择和下载服务器端的行。这会导致在下载阶段产生冲突。

  • 如果配置了快照同步,在客户端数据库中执行变更,然后变更为仅上载同步或双向同步:

    则在客户端数据库中所做的任何变更都不会被上载。如果需要上载变更,必须执行每个变更行的“虚更新”**。

  • 如果配置了快照同步,变更为仅上载同步或双向同步,然后在客户端数据库中执行变更:

    则在上载阶段会发生冲突。

请参阅

概念

对常见客户端与服务器同步任务进行编程
有助于开发应用程序的工具 (Sync Services)