我正在使用同步框架来同步两个数据库。创建同步设计器文件的标准过程是,使用数据源配置向导选择表。我创建了 .sync 文件和 SDF 文件。但是,当我与目标数据库同步时,以下代码会发生异常:
var syncDataServerSyncProvider =
new SyncDataServerSyncProvider(
ConfigurationManager.ConnectionStrings["ConnectionString"].
ConnectionString);
var syncAgent = new SyncDataSyncAgent();
syncAgent.LocalProvider = syncDataClientSyncProvider;
syncAgent.RemoteProvider = syncDataServerSyncProvider;
syncDataClientSyncProvider.SyncProgress += new EventHandler<SyncProgressEventArgs>(ShowClientProgress);
syncDataClientSyncProvider.ApplyChangeFailed += new EventHandler<ApplyChangeFailedEventArgs>(ShowFailures);
SyncStatistics syncStats = syncAgent.Synchronize();//Exception happen here
例外是:
System.Data.SqlClient.SqlException :无法初始化客户端数据库,因为 DbServerSyncProvider 的 GetSchema() 方法无法检索表“表名”的架构
内部例外是:
未对表“表名”启用更改跟踪
可以通过使用数据源配置向导从目标数据库中为同步设计器选择表来解决此异常。我们可以在此向导中启用更改跟踪。但实际上,在部署场景中,我们不能使用设计器文件,因为我们不能使用 Visual Studio。
所以我的问题是
- 为什么必须启用此对象跟踪?
- 我们如何在不依赖 Designer 的情况下在 C# 代码中启用此对象跟踪?