我正在编写一个应用程序,它使用MS Sync Framework将桌面WPF应用程序中的本地数据库(SQLCe)通过WCF Web服务同步到远程服务器。这是我第一次使用Sync Framework和作为Visual Studio项目(不是服务器托管的数据库)的一部分包含的SQLCe数据库,因此,我不知道有关正确设置的一些很多信息。应用
我的同步客户端库有一个包含在项目中的SQLCe数据库。我已经创建了数据库但是,我没有创建任何表格等等...我的理解是表格将在第一次同步时创建。
我编写了一个简单的测试应用程序,其中包含一个带有按钮的表单。它引用包含同步客户端DLL的库。因此,当单击按钮时,我实例化从SyncAgent继承的MyAppSyncAgent对象。 MyAppSyncAgent的构造函数实例化一个SyncGroup对象,然后,对于源数据库的每个表,它创建一个SyncTable对象(CreationOption = DropExistingOrCreateNewTable),设置SyncDirection,设置SyncTable的SyncGroup并将SyncTable加到this.Configuration.SyncTables。一旦SyngAgent对象被实例化,我就调用它的Synchronize()方法。
我正在接收构造函数运行后出现的“调用目标引发的异常”错误。这是调用堆栈的顶部:
System.Reflection.TargetInvocationException未处理 Message =调用目标抛出了异常。 来源= mscorlib程序 堆栈跟踪: 在System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo方法,Object target,Object []参数,SignatureStruct& sig,MethodAttributes methodAttributes,RuntimeType typeOwner) 在System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo方法,Object target,Object []参数,Signature sig,MethodAttributes methodAttributes,RuntimeType typeOwner) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object [] parameters,CultureInfo culture,Boolean skipVisibilityChecks) 在System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object []参数,CultureInfo文化) 在Microsoft.Synchronization.Data.ServerSyncProviderProxy.GetSchema(Collection`1 tableNames,SyncSession syncSession) 在Microsoft.Synchronization.SyncAgent.InitClientSchema() 在Microsoft.Synchronization.SyncAgent.DataSynchronize()
似乎GetSchema是罪魁祸首,但是,导致它失败的原因是什么?我怎样才能获得更多信息?谁能建议一些调试技术?我可以为此主题提供更多信息,以帮助您更准确地了解正在发生的事情吗?
我很感激你能给出的任何建议。