WCF Sync 2.1, триггер обновленное значение не синхронизировать обратно - PullRequest
0 голосов
/ 11 января 2019

Мы только что обновились до синхронизации 2.1 с SQL Server CE 3.5 SP2 и SQL Server, все работает отлично, кроме одной проблемы:

Когда синхронизация данных изменяется с клиента на SQL Server, у нас в этой таблице есть триггер AFTER INSERT, UPDATE для обновления значения столбца, которое называется sync_date, чтобы вернуть измененное значение триггера на клиентскую сторону (SQL Сервер CE 3.5), пробовал разными способами, вот пара:

Попытка № 1:

var scope = string.Format("{0}-{1}", CommonStaticConstants.COMMON_SCOPE_BIDIRECTION, auth.ApplicationUser);
GetOrchestrator(auth, GetMachineNames(auth.ApplicationUser), scope, SyncDirectionOrder.UploadAndDownload, false).Synchronize();

Попытка № 2:

var scope = string.Format("{0}-{1}", CommonStaticConstants.COMMON_SCOPE_BIDIRECTION, auth.ApplicationUser);
GetOrchestrator(auth, GetMachineNames(auth.ApplicationUser), scope, SyncDirectionOrder.Upload, false).Synchronize();
GetOrchestrator(auth, GetMachineNames(auth.ApplicationUser), scope, SyncDirectionOrder.Download, false).Synchronize();

Вот логика GetOrchestrator():

private static SyncOrchestrator GetOrchestrator(LoginAuthenticator auth, string machineNames, string scopeName, SyncDirectionOrder direction, bool isRescopingRequired)
{
    if (!orchestratorMap.Keys.Contains(scopeName) || isRescopingRequired)
    {
        var destinationProxy = new SqlSyncProviderProxy(auth, machineNames, scopeName, isRescopingRequired);

        orchestrator = new SyncOrchestrator();
        var localProvider = new SqlCeSyncProvider();
        localProvider.ScopeName = scopeName;

        localProvider.Connection = new SqlCeConnection(Infrastructure.ConnectionManager.GetClientDbConnection());
        localProvider.ApplyChangeFailed += OnApplyChangeFailed;

        orchestrator.LocalProvider = localProvider;
        orchestrator.RemoteProvider = destinationProxy;
        orchestrator.Direction = direction;

        CheckIfProviderNeedsSchema((SqlCeSyncProvider)orchestrator.LocalProvider, auth, machineNames, isRescopingRequired);

        if (orchestratorMap.Keys.Contains(scopeName))
        {
            orchestratorMap.Remove(scopeName);
        }

        orchestratorMap.Add(scopeName, orchestrator);
    }

    orchestratorMap[scopeName].Direction = direction;

    return orchestratorMap[scopeName];
}

Ни один из них не работает для меня, изменение данных может быть загружено правильно, но измененное значение триггера никогда не возвращалось на сторону клиента.

Есть идеи, что мне здесь не хватает? Пожалуйста, дайте мне знать, какие еще части кода мне нужно предоставить.

Заранее спасибо.

Джером

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...