Synchronization 同步框架-无法更新或删除主键表。仅插入工作

Synchronization 同步框架-无法更新或删除主键表。仅插入工作,synchronization,sync,microsoft-sync-framework,Synchronization,Sync,Microsoft Sync Framework,我正在尝试同步以下两个表 在目的数据库中,不能更新或删除父表;但是,不能正确地同步子表 我错过什么了吗?提前感谢 DbSyncScopeDescription scopeDesc = new DbSyncScopeDescription("Name"); scopeDesc.Tables.Add(SqlSyncDescriptionBuilder.GetDescriptionForTable("ParentTable", sqlSourceConn)); scopeDesc.Tables.Ad

我正在尝试同步以下两个表

在目的数据库中,不能更新或删除父表;但是,不能正确地同步子表

我错过什么了吗?提前感谢

DbSyncScopeDescription scopeDesc = new DbSyncScopeDescription("Name");

scopeDesc.Tables.Add(SqlSyncDescriptionBuilder.GetDescriptionForTable("ParentTable", sqlSourceConn));
scopeDesc.Tables.Add(SqlSyncDescriptionBuilder.GetDescriptionForTable("ChildTable", sqlSourceConn));


var sqlSourceProv = new SqlSyncScopeProvisioning(sqlSourceConn, scopeDesc);
sqlSourceProv.CommandTimeout = 3600;
if (!sqlSourceProv.ScopeExists("Name"))
   sqlSourceProv.Apply();

var sqlDestinationProv = new SqlSyncScopeProvisioning(sqlDestinationConn, scopeDesc);
sqlDestinationProv.CommandTimeout = 3600;
if (!sqlDestinationProv.ScopeExists("Name"))
   sqlDestinationProv.Apply();

var destinationProvider = new SqlSyncProvider("Name", sqlDestinationConn);

var sourceProvider = new SqlSyncProvider("Name", sqlSourceConn);

destinationProvider.MemoryDataCacheSize = MemorySize;
sourceProvider.MemoryDataCacheSize = MemorySize;

destinationProvider.ApplicationTransactionSize = BatchSize;

SyncOrchestrator orch = new SyncOrchestrator();
orch.RemoteProvider = destinationProvider;
orch.LocalProvider = sourceProvider;
orch.Direction = SyncDirectionOrder.Upload;

SyncOperationStatistics stats = orch.Synchronize();


如果您有FK关系,则它在冲突期间一定会引发错误(无法删除具有子项的父项)。。。您可以通过订阅ApplyChangeFailedEvent来验证这一点。您可以设置冲突解决方案来解决问题。

void destinationProvider\u applychangefiled(对象发送方,dbapplychangefiledeventargs e){e.conflict.Type}。我从e.Conflict.Type获取“LocalUpdateRemoteUpdate”。我是旧金山的新手。我怎样才能解决这个问题?感谢这意味着行在源和目标中都已更新…您可以将Action属性设置为您喜欢的冲突解决方案。。。看:朱奈特,谢谢你的回答!是否有任何地方可以将所有操作设置为RetryWithForceWrite,而不是在ApplyChangeFailed事件中设置?这是唯一可以设置的地方,因为这是唯一可以得到冲突通知并采取措施的地方。