Wpf 提供程序:未安装System.Data.SqlServerCe.3.5

Wpf 提供程序:未安装System.Data.SqlServerCe.3.5,wpf,linq,sql-server-ce,Wpf,Linq,Sql Server Ce,您好,我正在尝试将LINQ与SQL Server CE结合使用。我用SqlMetal生成了dmbl文件,将其添加到项目中,还添加了对assemblySystem.Data.SqlServerCe.dll的引用 我的应用程序是基于.NET4.0的WPF,构建为x86 在我的电脑上安装了SQL Server CE 我尝试了以下代码: const string connStr = @"Spiri_SQL_CE_DB.sdf"; var dataContext = new Spiri_SQL_CE_DB

您好,我正在尝试将LINQ与SQL Server CE结合使用。我用SqlMetal生成了dmbl文件,将其添加到项目中,还添加了对assembly
System.Data.SqlServerCe.dll的引用

我的应用程序是基于.NET4.0的WPF,构建为x86

在我的电脑上安装了SQL Server CE

我尝试了以下代码:

const string connStr = @"Spiri_SQL_CE_DB.sdf";
var dataContext = new Spiri_SQL_CE_DB(connStr);
var testNicks = dataContext.TestNick;
但我得到了这个错误:

无法打开“C:\Users\Jan\Documents\Visual Studio 2010\Projects\C#\pocke_Messenger_Project\pocke_Messenger\DB_TEST\Spiri_SQL_CE_DB.sdf”。未安装提供程序的System.Data.SqlServerCe.3.5

我错过了什么?对某个程序集的引用,还是其他内容


如果我在.NET3.5上重新定位应用程序,效果会很好

您需要Microsoft SQL Server Compact 3.5,请参阅此处以获取下载链接:


通常,此数据库仅与x-copy部署配合使用,因此一旦将其安装到开发人员计算机上,就可以通过工作环境目录进行复制。

此解决方案对我来说效果很好,您只需传递一个SQLCE连接对象而不是连接字符串:

const string connStr = @"Spiri_SQL_CE_DB.sdf";
var conn = new System.Data.SqlServerCe.SqlCeConnection(connStr);
var dataContext = new Spiri_SQL_CE_DB(conn);
var testNicks = dataContext.TestNick;

如果您在64位windows上运行应用程序。除了安装Microsoft SQL Server Compact 3.5外,您必须将平台目标更改为x86内置配置(位于项目属性内),从而强制应用程序为x86 CPU。

您有权,我只有3.5版服务器,但我的应用程序使用.net 4.0。谢谢您所说的x-copy部署是什么意思?我将所有SQL CE DLL与我的应用程序放在同一目录中,但除非我在客户端计算机上运行SQL CE安装程序,否则它仍然无法工作。这可能是一个先决条件问题、32位/64位问题、连接字符串问题等。。看这里啊。很少有人提到您需要更改app.config文件。谢谢你的链接。