2017-05-29 182 views
0

我必须同步两个本地和远程数据库。 如果我有这样的例子:.NET SyncFramework同步范围

本地数据库: 1.约翰 2.乔 3.标记

远程: 1.约翰 2.乔

和我同步两个数据库的最终结果将是我将在两个数据库中都有三条记录,但同步过程将触发记录#1和#2(不能插入它们)的错误,因为它们都存在于两个数据库中。默认情况下,Sync框架在这种情况下不会执行任何操作,只会继续执行,这对我来说可以。

是否有一种方法可以设置同步范围,以便只有两个数据库中的非相同记录才能同步(并且因此不会首先生成这些错误)?

我的代码如下所示(从微软的示例代码):

SqlSyncScopeProvisioning serverProvision = new SqlSyncScopeProvisioning(remoteServerConn); 
DbSyncScopeDescription remoteScopeDesc = new DbSyncScopeDescription(remoteProvisioningScopeName); 
DbSyncTableDescription tableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable(remoteTableName, remoteServerConn); 
remoteScopeDesc.Tables.Add(tableDesc); 
serverProvision.PopulateFromScopeDescription(remoteScopeDesc);     serverProvision.SetCreateTableDefault(DbSyncCreationOption.Skip);  
serverProvision.Apply(); 
SqlSyncScopeProvisioning clientProvision = new SqlSyncScopeProvisioning(localServerConn); 
DbSyncScopeDescription localScopeDesc = SqlSyncDescriptionBuilder.GetDescriptionForScope(remoteProvisioningScopeName, remoteServerConn); 
clientProvision.PopulateFromScopeDescription(localScopeDesc); 
clientProvision.Apply(); 
SyncOrchestrator syncOrchestrator = new SyncOrchestrator(); 
syncOrchestrator.LocalProvider = new SqlSyncProvider(remoteProvisioningScopeName, localServerConn); 
syncOrchestrator.RemoteProvider = new SqlSyncProvider(remoteProvisioningScopeName, remoteServerConn);  
syncOrchestrator.Direction = syncDirection; 
((SqlSyncProvider)syncOrchestrator.LocalProvider).ApplyChangeFailed += new EventHandler<DbApplyChangeFailedEventArgs>(Program_ApplyChangeFailed); 
SyncOperationStatistics syncStats = syncOrchestrator.Synchronize(); 

回答

0

同步框架做增量同步,即自上次同步发生了什么变化,没有什么是源和目标

之间的不同