Среда синхронизации между SQL CE и Azure, кажется, работает, но несовместима - PullRequest
1 голос
/ 01 сентября 2011

Я новичок в Sync Framework. Это использует версию 2.1

Мой проект предусматривает синхронизацию SQL CE с SQL Azure (скоро будет SQL Server 2008)

Сейчас я работаю с очень простым планом синхронизации. Я хочу загрузить все данные в записях из заявки и связанной таблицы инвентаризации в SQL Azure, где Claims.Status = 'Закрыто'. Это все, что я хочу сейчас, и я видел, как это работает, но тогда это не будет работать. Я не вижу сообщений об ошибках и не знаю, что он делает. Я попробовал инструмент трассировки, и результаты представлены на греческом языке, и, насколько я могу судить, он ничего не говорит о данных

Вот выдержка из кода в консольном приложении Windows:

//For Provisioning...
myScope.Tables.Add(Claims);  
myScope.Tables.Add(Inventory); 

SqlSyncScopeProvisioning sqlAzureProv = new SqlSyncScopeProvisioning(sqlAzureConn, myScope);

sqlAzureProv.Tables["Claims"].AddFilterColumn("Status");
sqlAzureProv.Tables["Claims"].FilterClause = "[side].[Status] = 'Closed'";
sqlAzureProv.Apply();

//For the client...
DbSyncScopeDescription clientSqlCeDesc = SqlSyncDescriptionBuilder.GetDescriptionForScope(myScope.ScopeName, null, "dbo", sqlAzureConn);
SqlCeSyncScopeProvisioning sqlCeProv = new SqlCeSyncScopeProvisioning(sqlCeConn, clientSqlCeDesc);
sqlCeProv.Apply();

//For Syncing:
SqlCeConnection sqlCeConn = new SqlCeConnection(sqlCeConnectionString);
SqlConnection sqlAzureConn = new SqlConnection(sqlazureConnectionString);
SyncOrchestrator orch = new SyncOrchestrator
{
     RemoteProvider = new SqlSyncProvider(scopeName, sqlAzureConn),
     LocalProvider = new SqlCeSyncProvider(scopeName, sqlCeConn),
     Direction = SyncDirectionOrder.Upload
};
Console.WriteLine("ScopeName={0} ", scopeName.ToUpper());
Console.WriteLine("Starting Sync " + DateTime.Now);
ShowStatistics(orch.Synchronize());

Что касается данных на локальной и удаленной базе данных, на локальной базе данных есть еще одна «закрытая» запись, чем на удаленной базе данных. Я удалил и предоставил, чтобы обновить его. Затем, когда я синхронизирую, результаты показывают 38 изменений, и я не знаю, какие изменения данных, но я знаю, что одна запись, которая должна быть обновлена ​​как «Закрытая», все еще открыта.

Я видел эту работу, где я обновил две записи для закрытия на CE, запустил синхронизацию и синхронизацию. Я попробовал это снова с другой записью, и вот что случилось. Я просто хочу видеть последовательные результаты. Что мне не хватает?

1 Ответ

2 голосов
/ 04 сентября 2011

Я прошу прощения у всех, кто потратил время на просмотр этого поста. Это было недоразумение о том, как работает Sync Framework. Сегодня я узнал, что статические фильтры не будут распространять изменения в существующих / отслеживаемых записях, они будут только вставлять новые записи. Sync Framework намного более плавный и намного более сложный, чем я считал. Мне просто нужно было больше читать и исследовать.

Особая благодарность JuneT не только за ваши ответы, но и за огромное количество информации, которую я нашел на других сайтах, с которыми вы работали. Также спасибо всем, кто потратил время на просмотр этого поста.

...