我有一個使用Microsoft Sync Framework的項目。除了同步方向以外,一切正常。如果上傳或下載,則根據用戶的選擇設置Synch Orchestrator的同步方向。同步方向按預期工作
編輯:
我已經上傳的文件,以更好地說明情況:
代碼:
private void RunSynch()
{
SqlConnection sqlServer = new SqlConnection(GetServerConnectionString());
SqlConnection sqlClient = new SqlConnection(GetClientConnectionString());
SyncOrchestrator syncOrchestrator = new SyncOrchestrator();
syncOrchestrator.LocalProvider = new SqlSyncProvider(strScopeName, sqlClient);
syncOrchestrator.RemoteProvider = new SqlSyncProvider(strScopeName, sqlServer);
switch(iButtonState) // int constant
{
case STATE_UPLOAD:
syncOrchestrator.Direction = SyncDirectionOrder.Upload;
break;
case STATE_DOWNLOAD:
syncOrchestrator.Direction = SyncDirectionOrder.Download;
break;
}
((SqlSyncProvider)syncOrchestrator.RemoteProvider).ApplyChangeFailed += new EventHandler<DbApplyChangeFailedEventArgs>(RemoteProvider_ApplyChangeFailed);
((SqlSyncProvider)syncOrchestrator.LocalProvider).ApplyChangeFailed += new EventHandler<DbApplyChangeFailedEventArgs>(LocalProvider_ApplyChangeFailed);
syncStats = syncOrchestrator.Synchronize();
}
private void RemoteProvider_ApplyChangeFailed(object sender, DbApplyChangeFailedEventArgs e)
{
if (rdoConflict.SelectedIndex == 0)// server wins option
{
e.Action = ApplyAction.Continue;
}
else
{
e.Action = ApplyAction.RetryWithForceWrite;
}
}
private void LocalProvider_ApplyChangeFailed(object sender, DbApplyChangeFailedEventArgs e)
{
if (rdoConflict.SelectedIndex == 0) // server wins option
{
e.Action = ApplyAction.RetryWithForceWrite;
}
else
{
e.Action = ApplyAction.Continue;
}
}
這裏的問題是在服務器的數據庫獲取由更新即使同步方向僅爲下載,客戶端也會更改。
固定:
我知道了它終於現在工作。同步框架完全沒有問題,但它的方向分配的開關部分,我調試,發現程序不通過開關的情況下,這就是爲什麼方向總是雙向的。
請提供我們在下載場景中使用了一些代碼 – Moons 2013-02-14 06:38:29
,客戶端永遠不會向服務器發送數據。你可以做一個簡單的測試,訂閱本地提供商的ChangesSelected事件,看看它是否真的在你的下載場景中觸發(它不應該) – JuneT 2013-02-14 11:24:51
我現在終於工作了。同步框架完全沒有問題,但它的方向分配的開關部分,我調試,發現程序不通過開關的情況下,這就是爲什麼方向總是雙向的。這真的很尷尬。對不起,夥計們,感謝所有的幫助!我完全分開了這個:「) – 2013-02-15 01:25:32