Microsoft sync framework 2.1 ServerSyncProviderProxy with client SQL Server Express

Microsoft sync framework 2.1 ServerSyncProviderProxy with client SQL Server Express

我一直在按照教程 here 使用 WCF 配置代理服务进行同步。但是我看到的所有 ClientProvider 示例都是针对 SqlServer Compact Edition 的。可以使用 SQL Server Express 的 SqlSyncProvider 来完成吗?

例如我的代码是:

var svc = new ServiceForSyncClient();
ServerSyncProvider serverProvider = new ServerSyncProviderProxy(svc);

// create the sync orhcestrator
var syncOrchestrator = new SyncOrchestrator
{
    LocalProvider = new SqlSyncProvider("ProductsScope", clientConn),
    RemoteProvider = serverProvider,
    Direction = SyncDirectionOrder.DownloadAndUpload
};

var syncStats = syncOrchestrator.Synchronize();

但是在同步的时候,出现异常:

An unhandled exception of type 'System.InvalidCastException' occurred in Microsoft.Synchronization.dll

Additional information: Microsoft.Synchronization.KnowledgeSyncProvider

您正在使用两个完全不同的同步提供程序。您的部分代码正在使用较旧的离线提供程序(DBServerSyncProvider 和 SQLCEClientSyncProvider),而您正在尝试使用 SQLSyncProvider,它是较新的 knowledge-based/peer-to-peer 同步提供程序的一部分(SqlSycProvider/SqlCeSyncProvider).

您不能混合搭配新旧同步提供程序

如果您想使用 SQL Express 作为客户端,here 是将其与 WCF 一起使用的示例