Я тороплюсь (что никогда не бывает хорошо), чтобы настроить Sync Framework и запустить его для крайнего срока "автономной поддержки" в моем проекте.У нас есть экземпляр SQL Express 2008 на нашем сервере, а затем мы развернем SQLCE на клиентах.Клиенты будут синхронизироваться только с сервером, без одноранговой сети.
Пока у меня работает следующее:
- Настройка схемы сервера
- Область создана и протестирована
- Сервер подготовлен
- Клиент подготовлен с созданием таблицы
Я был очень впечатлен относительной простотой всего этого.Затем я понял следующее:
- Схема, созданная посредством обеспечения клиента SQLCE, не устанавливает значения по умолчанию для типов уникальных идентификаторов.
- Ограничения FK не создаются на клиенте
Вот код, который используется для создания клиентской схемы (взят из примера, который я нашел где-то в Интернете)
static void Provision()
{
SqlConnection serverConn = new SqlConnection(
"Data Source=xxxxx, xxxx; Database=xxxxxx; " +
"Integrated Security=False; Password=xxxxxx; User ID=xxxxx;");
// create a connection to the SyncCompactDB database
SqlCeConnection clientConn = new SqlCeConnection(
@"Data Source='C:\SyncSQLServerAndSQLCompact\xxxxx.sdf'");
// get the description of the scope from the SyncDB server database
DbSyncScopeDescription scopeDesc = SqlSyncDescriptionBuilder.GetDescriptionForScope(
ScopeNames.Main, serverConn);
// create CE provisioning object based on the scope
SqlCeSyncScopeProvisioning clientProvision = new SqlCeSyncScopeProvisioning(clientConn, scopeDesc);
clientProvision.SetCreateTableDefault(DbSyncCreationOption.CreateOrUseExisting);
// starts the provisioning process
clientProvision.Apply();
}
Когда Sync Framework создает схему на клиенте, мне нужно сделать дополнительныеИзменения, перечисленные ранее (значения по умолчанию, ограничения и т.Событие CreateSchema.Этот пример кода на самом деле показывает установку свойства RowGuid для столбца, что именно то, что мне нужно сделать.Однако, что такое SqlCeClientSyncProvider ?!Все это время (4 дня) я работаю с SqlCeSyncProvider в моем коде синхронизации.Итак, есть SqlCeSyncProvider и SqlCeClientSyncProvider?
Документация по MSDN не очень хороша для объяснения того, что либо из этого.
Я еще больше запутался, следует ли мне вносить изменения в схему во время предоставленияили во время синхронизации?
Как бы вы все предложили мне внести изменения в схему CE клиента во время подготовки?