Синхронизация SQL Server 2 008 Баз данных по использованию HTTP WCF & Sync Framework

Попытайтесь поместить контейнерное отделение (с overflow:auto) вокруг довольного и боковой панели.

, Если это не работает, у Вас есть какие-либо снимки экрана или ссылки в качестве примера, где нижний колонтитул не отображен правильно?

23
задан Raj 10 July 2013 в 05:15
поделиться

1 ответ

Я сделал следующее, чтобы заставить Sync Framework работать с использованием WCF с SQL Server 2008

  • Включено отслеживание изменений в SQL Server 2008
  • Включено отслеживание изменений для таблиц, участвующих в Sync
  • Добавлена ​​таблица метаданных с именем anchor
  • Добавлена ​​таблица для отслеживания идентификаторов клиентов с именем "guid"
  • Используется SqlExpressClientSyncProvider, доступный на сайте проекта Codeplex MSF в качестве поставщика синхронизации клиентов
  • Используется SqlSyncAdapterBuilder для создания адаптеров для таблиц, участвующих в Sync

     foreach (элемент var в anchorTables)
    {
     // Используйте конструктор адаптеров для генерации T-SQL для запроса данных отслеживания изменений и CRUD
     Построитель SqlSyncAdapterBuilder = новый SqlSyncAdapterBuilder ();
     builder.Connection = новый SqlConnection (this.connectionStringFactory.ConnectionString);
     builder.ChangeTrackingType = ChangeTrackingType.SqlServerChangeTracking;
     builder.SyncDirection = SyncDirection.Bidirectional;
     builder.TableName = item.TableName;
     // Получаем адаптеры синхронизации от сборщика
     SyncAdapter clientAdapter = builder.ToSyncAdapter ();
     clientAdapter.TableName = item.TableName;
     this.clientSyncProvider.SyncAdapters.Add (clientAdapter);
    }
    
  • Добавлены команды привязки

     SqlCommand anchroCommand =
     новый SqlCommand {CommandText = "SELECT @" 
     + SyncSession.SyncNewReceivedAnchor 
     + "= change_tracking_current_version ()"};
    
    anchroCommand.Parameters.Add ("@" 
     + SyncSession.SyncNewReceivedAnchor, SqlDbType.BigInt)
     .Direction = ParameterDirection.Output;
    
    this.clientSyncProvider.SelectNewAnchorCommand = anchroCommand;
    
  • Реализована служба WCF с использованием экземпляра DbServerSyncProvider, работающего в качестве поставщика синхронизации сервера. Вам нужно будет сгенерировать адаптеры синхронизации и установить команду привязки, как показано на предыдущем шаге, и для поставщика сервера.

      [Контракт на обслуживание]
    открытый интерфейс ISyncService
    {
     [OperationContract]
     SyncContext ApplyChanges (SyncGroupMetadata groupMetadata, DataSet dataSet, SyncSession syncSession);
     [OperationContract]
     SyncContext GetChanges (SyncGroupMetadata groupMetadata, SyncSession syncSession);
     [OperationContract]
     SyncSchema GetSchema (Коллекция  tableNames, SyncSession syncSession);
     [OperationContract]
     SyncServerInfo GetServerInfo (SyncSession syncSession);
    }
    
  • Создан прокси-класс, реализующий ServerSyncProvider для доступа к службе WCF.

     открытый класс DbServerSyncProviderProxy: ServerSyncProvider
    {
     SyncServiceProxy.SyncServiceClient serviceProxy = новый SyncServiceProxy.SyncServiceClient ();
     общедоступное переопределение SyncContext ApplyChanges (SyncGroupMetadata groupMetadata, DataSet dataSet, SyncSession syncSession)
     {
     вернуть serviceProxy.ApplyChanges (groupMetadata, dataSet, syncSession);
     }
    }
    
  • Создал экземпляр SyncAgent и установил RemoteProvider с экземпляром прокси-класса, который используется для доступа к службе WCF. LocalProvider устанавливается с экземпляром SqlExpressClientSyncProvider
  • Добавлены таблицы и группы синхронизации в конфигурацию SyncAgent
  • SyncAgent.Synchronize ()
28
ответ дан 29 November 2019 в 02:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: