Поделиться через


Практическое руководство. Настройка синхронизации данных в приложении

Если для приложения требуются данные из удаленной базы данных, которые не должны постоянно обновляться из базы данных (или которые не всегда доступны), то можно использовать локальную базу данных для хранения данных на клиентском компьютере.

В качестве примера рассмотрим приложение инвентаризации, использующее данные из нескольких таблиц в базе данных. Так как число имеющихся в наличии экземпляров каждой детали является важной характеристикой данных, которые постоянно меняются, то приложение должно постоянно отражать текущие значения в базе данных. Приложение также должно отображать список действительных компаний-поставщиков, который изменяется сравнительно редко. Сведения об этих компаниях хранятся в таблице Shippers, и их не обязательно извлекать каждый раз, когда выполняется запрос к базе данных. Если хранить таблицу Shippers в кэше локальной базы данных, то можно уменьшить количество лишних обращений, которые приложение должно сделать к удаленной базе данных. Рассмотрим возможность хранения данных, которые изменяются сравнительно редко (или по заранее известному расписанию), в кэше локальной базы данных.

Для локального хранения данных используется кэш локальной базы данных на SQL Server Compact 3.5. В качестве кэша локальной базы данных можно использовать существующую базу данных SQL Server Compact 3.5. Если у вас еще нет локальной базы данных, то с помощью диалогового окна Настроить синхронизацию данных можно создать новую локальную базу данных.

После добавления локальной базы данных в приложение и завершения работы с диалоговым окном Настроить синхронизацию данных по-прежнему необходимо добавить код в приложение для инициации синхронизации. После успешной синхронизации данных необходимо также добавить код для наполнения таблицы набора данных из локальной базы данных.

Примечание

Диалоговое окно Настроить синхронизацию данных предоставляет возможность настроить Microsoft Synchronization Services для ADO.NET только для загрузки сценариев.Это означает, что после настройки синхронизации данных с помощью диалогового окна Настроить синхронизацию данных вызов Microsoft.Synchronization.Data.SyncAgent.Synchronize только обновит локальную базу данных изменениями, выполненными на удаленной базе данных.Изменения, выполненные в локальной базе данных, не будут переданы на удаленную базу данных.После настройки синхронизации данных с помощью диалогового окна Настроить синхронизацию данных можно программно включить загрузку на сервер (двунаправленную синхронизацию) во время синхронизации.Дополнительные сведения см. в разделе Практическое руководство. Настройка локальной и удаленной баз данных для двунаправленной синхронизации.

Добавление локального кэша базы данных в проект

Можно настроить приложения на локальное кэширование данных путем добавления файла SYNC в проект и настройки его с помощью диалогового окна Настроить синхронизацию данных. Можно добавить файлы SYNC в проекты, используя диалоговое окно Добавление нового элемента.

В следующей процедуре представлены основные шаги по настройке синхронизации данных. Примеры, в которых используются фактические данные, см. в разделе Пошаговое руководство. Создание произвольно подключаемого приложения.

Примечание

На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Для настройки синхронизации данных:

  1. В меню Проект выберите команду Добавить новый элемент.

  2. Выберите шаблон Кэш локальной базы данных.

  3. Либо введите альтернативное имя, либо оставьте имя по умолчанию из LocalDataCache1.Sync.

  4. Нажмите кнопку Добавить.

    SYNC-файл добавляется в проект, и открывается диалоговое окно Настроить синхронизацию данных.

  5. Задайте Соединение с сервером к удаленной базе данных, к которой требуется подключиться.

  6. Задайте Соединение с клиентом к локальной базе данныхSQL Server Compact 3.5, которая будет хранить данные. Если у вас нет локальной базы данных, можно оставить значение Имя базы данных .sdf (новое) по умолчанию для создания новой базы данных в проекте. Имя новой базы данных будет основываться на имени базы данных в окне Подключение к серверу.

    Примечание

    Кнопка OK отключена по умолчанию и включается после добавления таблицы на область Кэшированные таблицы.

  7. Нажмите кнопку Добавить, чтобы открыть диалоговое окно Настройка таблиц для автономного использования, выберите и настройте таблицы базы данных для добавления в кэш локальной базы данных.

  8. Выберите таблицы базы данных, которые требуется добавить в кэш локальной базы данных, и настройте каждый из следующих параметров:

    • Данные для загрузки:

      Новые и добавочные изменения после первой синхронизации

      Этот параметр извлекает из сервера записи, которые были изменены с момента последней синхронизации. Во время первой синхронизации будет загружена вся таблица.

      Каждый раз всю таблицу

      Этот параметр удаляет локальную таблицу и заменяет ее версией на сервере.

    • Сравните обновления с помощью

      Установите это для имени столбца в выбранной таблице, который используется для отслеживания последнего сделанного обновления записи. По умолчанию в этом списке появится любой столбец, который определен как datetime или timestamp. Если таблица не содержит столбец, используемый для отслеживания измененных записей, можно оставить стандартную настройку LastEditDate (новое), которая создаст столбец отслеживания.

    • Сравните вставки с помощью

      Установите это для имени столбца в выбранной таблице, который используется для отслеживания добавления новых записей в таблицу. По умолчанию в этом списке появится любой столбец, который определен как datetime или timestamp. Если таблица не содержит столбец, используемый для отслеживания появления новых записей, можно оставить стандартную настройку CreationDate (new), которая сама создаст столбец отслеживания.

    • Переместить удаленные элементы в

      Установите это для таблицы на сервере базы данных, которая используется для хранения удаленных записей. По умолчанию любая таблица с именем tableName_Deleted или tableName _Tombstone будет отображаться в этом списке. Если база данных не содержит таблицу для хранения удаленных элементов, можно оставить настройку по умолчанию tableName _Tombstone (новое), которая создаст таблицу для удаленных элементов.

      Примечание

      Установите эти параметры для каждой таблицы, которую надо настроить для автономного использования.

  9. По умолчанию параметры окна Создание скрипта автоматически устанавливаются для создания и выполнения серверных скриптов, которые используются для настройки сервера базы данных сервера. Если нет необходимости в этих скриптах или если у вас нет доступа к серверу базы данных, можно либо очистить этот параметр и вручную запускать скрипты, либо изменить таблицы. Если на сервере изменения не требуются, скрипт создаваться не будет.

    Примечание

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

  10. Нажмите кнопку ОК.

  11. Нажмите кнопку Показать пример кода, чтобы открыть диалоговое окно Пример кода, которое покажет пример кода, запускающий процесс синхронизации. Можно скопировать этот фрагмент в буфер обмена и вставить в программу.

  12. При необходимости установите параметры Дополнительно.

    Параметры Дополнительно в диалоговом окне Настроить синхронизацию данных представляют параметры, позволяющие контролировать, синхронизированы ли таблицы по отдельности или в пределах одной транзакции. Эти параметры также позволяют осуществить разделение кода для многоуровневых приложений.

    1. Синхронизация таблиц в одной транзакции. По умолчанию этот флажок не установлен, и все таблицы будут синхронизироваться по отдельности. Если обнаружены ошибки, только таблицы с ошибками откатят свои модификации. Если этот параметр установлен, все таблицы синхронизируются в одной транзакции. Если обнаружены ошибки, все модификации для всех таблиц откатываются.

    2. Создание компонентов синхронизации. По умолчанию компоненты синхронизации создаются и для сервера, и для клиента. Можно установить этот параметр на значение Только клиент или на значение Только сервер для соответствия требованиям приложения.

    3. Расположение сервера проекта. По умолчанию компоненты синхронизации для сервера будут созданы в текущем проекте. Установите этот параметр для создания компонентов синхронизации для сервера в любой проект вида Visual Basic или Visual C# в решении.

    4. Расположение клиента проекта. По умолчанию компоненты синхронизации для клиента будут созданы в текущем проекте. Установите этот параметр для создания компонентов синхронизации для клиента в любой проект вида Visual Basic или Visual C# в решении.

После завершения работы с диалоговым окном Настроить синхронизацию данных необходимо добавить код в приложение для запуска синхронизации.

Примечание

Синхронизация данных обновляет локальную базу данных, а не таблицу набора данных или любой другой объект в приложении.Не забудьте перезагрузить источник данных приложения обновленными данными из локальной базы данных.Например, вызовите метод TableAdapter.Fill для загрузки таблицы данных набора данных обновленными данными из локальной базы данных.

Чтобы начать синхронизацию:

  • При копировании кода из диалогового окна Пример кода в предыдущем разделе можно просто вставить его в приложение из буфера. Иначе можно вставить следующий код в любое место приложения, где нужно начать процесс синхронизации:

См. также

Задачи

Пошаговое руководство. Создание произвольно подключаемого приложения

Пошаговое руководство. Развертывание произвольно подключаемых клиентских приложений с локальной базой данных

Основные понятия

Общие сведения о произвольно подключаемых приложениях

Другие ресурсы

Периодически подключаемые приложения (кэширование локальной базы данных)