Provider:未安装System.Data.SqlServerCe.3.5

时间:2011-01-26 12:26:48

标签: wpf linq sql-server-ce

您好我正在尝试使用LINQ和SQL Server CE。我用SqlMetal生成了dmbl文件,将其添加到项目中,并添加了对程序集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#\ Pokec_Messenger_Project \ Pokec_Messenger \ DB_TEST \ Spiri_SQL_CE_DB.sdf'。未安装提供程序'System.Data.SqlServerCe.3.5'。

我错过了什么?对某些装配或其他东西的引用?

如果我在.NET3.5上重新定位应用程序它运行良好!

3 个答案:

答案 0 :(得分:5)

您需要Microsoft SQL Server Compact 3.5,请点击此处查看下载链接:http://www.microsoft.com/sqlserver/2005/en/us/compact.aspx

通常,此数据库仅适用于x-copy部署,因此一旦将其安装在dev计算机上,就可以将其复制到工作环境目录中。

答案 1 :(得分:3)

这个解决方案对我很有用,你需要的只是传递一个SQLCE Con​​nection对象而不是连接字符串:

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;

答案 2 :(得分:1)

如果您在64位Windows上运行该应用程序。除了安装Microsoft SQL Server Compact 3.5之外,您必须通过在项目属性内部的构建配置中将平台目标更改为x86来强制应用程序为x86 CPU。