之前已经提出了类似的问题,但经过一天的答案后,我仍然很困惑。
我在服务器上使用Microsoft的Sync Framework和SQL2008,在Windows Mobile设备上使用SQL CE。我原本以为这是一个非常常见的要求。我不想将大表复制到移动设备上。我只想要所需的记录。例如,每个用户都需要从作业表中取出“作业”。他们不需要任何其他用户的工作。所以我需要一个设备的“where jobId = 3”和另一个设备的“where jobId = 4”等。
这看起来很有希望:http://jtabadero.spaces.live.com/blog/cns!BF49A449953D0591!1203.entry
但不幸的是它不适用于我的代码。示例中的代码似乎试图获取包含SQL的代码:
var remoteProvider = (LocalDataCache1ServerSyncProvider)syncAgent.RemoteProvider;
var selectIncrementalInsertsCommand = remoteProvider.SalesLT_CustomerSyncAdapter.SelectIncrementalInsertsCommand;
但是包含SQL(由VS生成)的代码位于服务器端,并且客户端代码中只有代理可用。这就是代理的添加方式:
// The WCF Service
var webSvcProxy = new MicronetCacheSyncService();
// The Remote Server Provider Proxy
var serverProvider = new ServerSyncProviderProxy(webSvcProxy);
// The Sync Agent
var syncAgent = new MicronetCacheSyncAgent();
syncAgent.RemoteProvider = serverProvider;
那么如何从客户端获取包含sql的服务器端代码?对不起,我不是很好解释,但我想任何人都不可能得到答案。简短的版本是否有人知道一种简单的方法来限制同步到移动设备的记录是这种类型的应用程序?我认为该示例适用于桌面应用程序。
在我看来,这个同步框架是另一个微软半生不熟的版本,实际上只是一个测试版。它开始让我想起以前使用Entity Framework 1.0的一些可怕的经历:(
答案 0 :(得分:0)
http://msdn.microsoft.com/en-us/library/dd918848%28SQL.105%29.aspx上的教程包含为范围配置过滤所需的一切。
仅供参考,该教程适用于Sync Framework 2.0,而从上面的代码中可以看出,您使用的是Sync Framework 1.0 - 一种传统产品。