微软同步框架。将“范围”应用于现有的 SqlCe 数据库

Posted

技术标签:

【中文标题】微软同步框架。将“范围”应用于现有的 SqlCe 数据库【英文标题】:Microsoft Sync Framework. Applying "Scope" to an existing SqlCe database 【发布时间】:2009-12-17 22:53:01 【问题描述】:

是否可以将 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);

请让我知道这是否可行或者我做错了什么。谢谢, 亚历克斯

【问题讨论】:

【参考方案1】:

我会尝试的一件事是在调用 SetCreateTableDefault 时使用 Skip 枚举值。

scopeProvisioning.SetCreateTableDefault(DbSyncCreationOption.Skip);

这些表已经存在于数据库中,您不需要创建它们。

此外,如果更改跟踪已启用,我过去在配置 SQL Server Compact Edition 数据库时遇到问题。

干杯,

斯科特

【讨论】:

感谢您抽出宝贵时间回复。我最终对事物进行了重构,以便在创建 SqlCe 数据库时将其应用范围。

以上是关于微软同步框架。将“范围”应用于现有的 SqlCe 数据库的主要内容,如果未能解决你的问题,请参考以下文章

Sencha CMD 构建过程应用于现有的 ExtJs 4.1 应用程序

Terraform适用于现有的ARM资源。需要国家吗?

sonata_type_collection 字段仅适用于现有的父对象

PHP MySQL:搜索查询仅适用于现有的完整术语

将实体框架与 SQLCE 一起使用时出现奇怪的异常

在我的 WPF 应用程序安装程序中包含 SQLCE (3.5)