SQL Server CE 不兼容的数据库版本
Posted
技术标签:
【中文标题】SQL Server CE 不兼容的数据库版本【英文标题】:SQL Server CE Incompatible Database Version 【发布时间】:2013-05-14 12:39:50 【问题描述】:我有一个 SQL Server CE 4.0 数据库(.sdf
文件),当我尝试从我的应用程序 (WPF) 对数据库进行查询时,我收到以下错误。
我已检查 SQL Server CE 4 sp1 是否已安装。 我已尝试在 Database.Net 4 和 vs2012 的连接设置中创建数据库。 我正在运行 Windows 7 64 位 我的连接字符串存储在不兼容的数据库版本。如果这是兼容文件,请运行修复。对于其他情况,请参阅文档。 [ Db 版本 = 4000000,请求版本 = 3505053,文件名 = \?\C:\Database\ShortageReport\MRPDatabase.sdf]
app.config
。
我正在使用 SQL Server Compact Toolbox 生成上下文和映射。
我的app.config
:
<connectionStrings>
<add name="DatabaseContext"
providerName="System.Data.SqlServerCe.4.0"
connectionString="Data Source=C:\Database\ShortageReport\MRPDatabase.sdf"/>
</connectionStrings>
有什么想法吗?
【问题讨论】:
见this链接 在我的例子中,它是“...Db version = 0, Requested version = 0...” 【参考方案1】:添加对版本 4.0 System.Data.SqlServerCe.dll ADO.NET 提供程序的引用
然后用SqlCeConnection
(4.0) 对象初始化DataContext
类。
using (SqlCeConnection conn = new SqlCeConnection(@"Data Source=C:\projects\Chinook\Chinook40.sdf"))
using (Chinook db = new Chinook(conn))
var list = db.Album.ToList();
if (list.Count > 0)
System.Diagnostics.Debug.Print("It works!");
【讨论】:
System.Data.SqlServerCe.dll 不在作为参考添加的程序集列表中。文件在哪里?我会尝试浏览它。 刮一下,我找到了。现在就试试。 我想从链接 Incompatible Database Version 3.5 vs 4.0 添加与问题相关的评论,因为 LInq To Sql 运行时被硬编码为 v 3.5,但是如果您使用 SqlCeConnection 对象而不是连接来初始化 DataContext字符串,它将与 4 一起使用。(ErikEJ 评论)【参考方案2】:我从以下路径更新了 SqlServerCe.dll 引用,它已修复
参考路径:
C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Desktop\System.Data.SqlServerCe.dll
【讨论】:
【参考方案3】:我发现了类似的问题并卸载了所有框架 SQL Server Compact 3.5 和 SQL Server Compact 3.5 SP1 我已经解决了这个问题。
干杯,
【讨论】:
以上是关于SQL Server CE 不兼容的数据库版本的主要内容,如果未能解决你的问题,请参考以下文章
从 SQL Server Express 导入 SQL Server CE
将 SQL Server CE 4 数据库转换为没有 Visual Studio Pro 版本的 SQL Server 2008 Express