【发布时间】:2017-01-26 11:48:57
【问题描述】:
我开发了一个可以在联机和脱机模式下工作的 Windows C# 应用程序。
在联机模式下,它连接到 SQL Server。在离线模式下,它连接到本地数据库。
我使用 Microsoft Sync Framework 2.1 按需同步 2 个数据库。
到目前为止,我使用 SQL Server 的 LocalDB 实例作为本地数据库。但是在我的应用程序安装过程中自动设置系统很痛苦。所以我坚持使用 SQL Server Compact 3.5 或 4.0,它们非常易于分发(包含在单个文件中)。
但我什至无法编译 Compact DB 的配置代码:
DbSyncScopeDescription scopeDesc = new DbSyncScopeDescription("MyScope");
SqlCeConnection clientConn = new SqlCeConnection(OfflineConnectionString);
var clientProvision = new SqlCeSyncScopeProvisioning(clientConn, scopeDesc);
clientProvision.Apply();
我以前使用过(没有Ce 类)但SqlCeSyncScopeProvisioning 无法解决。
这里出了点大问题。
如何同步我的 CompactDB 以将其作为本地数据库分发?
【问题讨论】:
-
您是否尝试过分发 LocalDB 数据库文件?您可以连接到特定的 LocalDB 文件。例如。
connectionString="Data Source=(LocalDb)\v12.0;AttachDbFilename=C:\MyDatabase.mdf;Initial Catalog=MyDatabase;Integrated Security=True"。我没有在客户端 PC 上分发我的应用程序,所以我不知道安装 SqlLocalDB 是否麻烦,但你可以试一试。 -
安装 SqlLocalDB 并不是那么容易。特别是当我必须删除旧的现有实例并安装新实例时让它工作。但如果紧凑方法失败,我必须继续努力。谢谢。
-
为什么要删除旧的?它是你的吗?您可以添加任何名称的新实例。我想,我是在提倡 LocalDB,因为 CE 有点老了,最终会死。
-
是的,我必须替换我的应用程序的旧实例。所以我必须替换本地实例并使用最新的数据库模式安装新实例。但我希望它具有相同的实例名称。
-
你使用某种 ORM 吗?喜欢 EF 还是 NHibernate?如果是,也许数据库迁移是一个解决方案?
标签: c# sql-server synchronization sql-server-ce microsoft-sync-framework