Microsoft Sync Framework. Применение "Scope" к существующей базе данных SqlCe - PullRequest
1 голос
/ 18 декабря 2009

Возможно ли применить DbSyncScopeDescription к существующей SqlCeDatabase?

Я пытаюсь подготовить существующую базу данных, используя DbSyncScopeDescription, созданную из этой базы данных.

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

В последней строке я получаю SqlCeException с сообщением:

"Указанный индекс не существует. [SysChangeTxBsn_idx]".

private void Test()
{
    DbSyncScopeDescription scopeDescription =
       new DbSyncScopeDescription("MyScope");

    foreach (string tableName in TableNames)
    {
        DbSyncTableDescription tableDecsription = SqlCeSyncDescriptionBuilder
            .GetDescriptionForTable(tableName, myConnection);
        scopeDescription.Tables.Add(tableDecsription);
    }

    SqlCeSyncScopeProvisioning scopeProvisioning =
        new SqlCeSyncScopeProvisioning(scopeDescription);
    scopeProvisioning.SetCreateTableDefault(DbSyncCreationOption.Create); 
    scopeProvisioning.Apply(myConnection);
}

Пожалуйста, дайте мне знать, если это возможно, или я делаю что-то не так. Спасибо, Alex

1 Ответ

0 голосов
/ 28 декабря 2009

Одна вещь, которую я бы попробовал, это использовать значение перечисления Skip в вызове SetCreateTableDefault.

scopeProvisioning.SetCreateTableDefault(DbSyncCreationOption.Skip);

Таблицы уже присутствуют в базе данных, и вам не нужно их создавать.

Кроме того, в прошлом у меня были проблемы с подготовкой баз данных SQL Server Compact Edition, если отслеживание изменений уже включено.

Приветствия

Scott

...