【发布时间】:2014-08-01 08:51:46
【问题描述】:
好的,这个问题真的让我很困惑,如果问题的标题没有准确描述我的问题,我深表歉意。
我有一个用 C# 编写的程序,使用 Entity Framework 和 SQL Server CE。我在 Windows 7 上开发它,它工作正常。我也有一台 Windows 8.1 机器,我已经对其进行了测试,它也可以正常工作。
但是,在一些 Windows 8.1 计算机上,程序在尝试访问数据库时会立即崩溃。我收到以下错误:
未处理的异常:System.InvalidOperationException:找不到具有不变名称“System.Data.SqlServerCe.3.5”的 ADO.NET 提供程序的实体框架提供程序。确保提供程序已在应用程序配置文件的“entityFramework”部分注册。请参阅http://go.microsoft.com/fwlink/?LinkId=260882 了解更多信息。
现在,这真的让我很困惑,因为我的项目 (4.0) 上安装了用于 SQL Server CE 的最新 NuGet 包。我使用 SQL Server CE 工具箱显式创建了一个 SQL Server CE 4.0 数据库,我将 4.0 dll 与应用程序一起分发,并且我在my app.config 文件 (invariantName="System.Data.SqlServerCe.4.0") 中明确列出了 4.0 版本。
那么,为什么错误是System.Data.SqlServerCe.3.5?为什么这个错误只出现在几台 Windows 8.1 机器上?
(我还搜索了整个解决方案,文本“3.5”甚至没有出现在任何地方。)
我发现了类似的错误,并尝试(来自this question)包含以下内容:
private volatile Type _dependency;
public MyClass()
{
_dependency = typeof(System.Data.Entity.SqlServer.SqlProviderServices);
}
没有效果,我仍然得到相同的确切答案。
无论如何,如果有人有任何想法,我将不胜感激。
【问题讨论】:
-
我怀疑这与它有什么关系,但是您的项目使用的是什么版本的 .NET 框架?
标签: c# sql-server-ce-4 sql-server-ce-3.5