我开发了一个可以在线和离线模式下运行的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以将其作为我的本地数据库进行分发?
答案 0 :(得分:7)
首先确保您已成功安装sdk?
在此之后,请确保添加了以下参考:
Microsoft.Synchronization.Data.dll,
Microsoft.Synchronization.Data.Server.dll
同样在我的情况下,它可以添加
修改强>
根据您的评论,如果您使用SQL Server CE 4,则仅。
我现在尝试使用SQL Server CE 3.5,实际上我可以重现您的问题。
切换到SQL Server CE 4.0修复它。
ExampleTable 4.0
<强> TestCode 强>
var scopeDesc = new DbSyncScopeDescription("MyScope");
var tbl = new DbSyncTableDescription("TestTable");
var pkColumn = new DbSyncColumnDescription("Id", "int");
pkColumn.IsPrimaryKey = true;
tbl.Columns.Add(pkColumn);
tbl.Columns.Add(new DbSyncColumnDescription("Name", "nvarchar(254)"));
scopeDesc.Tables.Add(tbl);
var clientConn = new SqlCeConnection(@"Data Source=test.sdf;Persist Security Info=False;");
var clientProvision = new SqlCeSyncScopeProvisioning(clientConn, scopeDesc);
clientProvision.Apply();
<强>结果强>
一切都汇编得很好。执行上述步骤后,您应该可以轻松地将代码迁移到SQL Server CE