调用构造函数时,Microsoft.Synchronization.Data.SqlServerCe中缺少方法异常

时间:2015-08-27 21:46:54

标签: c# sql-server visual-studio sql-server-ce microsoft-sync-framework

我正在使用Visual Studio Community 2015并尝试执行有关如何将SQL Server数据库与本地SQL Server Compact数据库同步的MSDN演练。

具体来说,当我尝试构建演练的ProvisionClient组件(https://msdn.microsoft.com/en-us/library/ff928765(v=sql.110).aspx

时,我收到了“缺失方法”异常

确切的错误是:

  

dnx.host.dll中出现未处理的“System.MissingMethodException”类型异常

     

其他信息:找不到方法:'Void Microsoft.Synchronization.Data.SqlServerCe.SqlCeSyncScopeProvisioning..ctor(System.Data.SqlServerCe.SqlCeConnection,Microsoft.Synchronization.Data.DbSyncScopeDescription)'。

这是我的代码:

using System.Data.SqlClient;
using System.Data.SqlServerCe;

using Microsoft.Synchronization.Data;
using Microsoft.Synchronization.Data.SqlServer;
using Microsoft.Synchronization.Data.SqlServerCe;

namespace ProvisionClient
{
    class Program
    {
        static void Main(string[] args)
        {
            // create a connection to the SyncCompactDB database
            SqlCeConnection clientConn = new SqlCeConnection(@"Data Source='C:\proj\synctest\SyncSQLServerAndSQLCompact\SyncCompactDB.sdf'");

            // create a connection to the SyncDB server database
            SqlConnection serverConn = new SqlConnection("Data Source=SHRIMAD\\SQLEXPRESS; Initial Catalog=SyncDB; Integrated Security=True");

            // get the description of ProductsScope from the SyncDB server database
            DbSyncScopeDescription scopeDesc = SqlSyncDescriptionBuilder.GetDescriptionForScope("ProductsScope", serverConn);

            // create CE provisioning object based on the ProductsScope
            SqlCeSyncScopeProvisioning clientProvision = new SqlCeSyncScopeProvisioning(clientConn, scopeDesc);

            // starts the provisioning process
            clientProvision.Apply();

        }
    }
}

我注意到了这一点:

// create CE provisioning object based on the ProductsScope
SqlCeSyncScopeProvisioning clientProvision = new SqlCeSyncScopeProvisioning(clientConn, scopeDesc);

如果我调用只有scopeDesc的构造函数,则异常不会显示,但如果我使用clientProvision.Apply调用以下clientConn,那么我会得到Apply行缺少方法异常。

我做错了什么?看起来它不想接受clientConn参数,但如果没有它,它就无法知道要提供什么数据库。

TIA,这是我在StackOverflow上的第一篇文章!

1 个答案:

答案 0 :(得分:0)

Sync Framework不支持SQL CE 4.0。

查看我使用绑定重定向的here博客的解决方法。