无法加载具有不变名称“System.Data.SqlServerCe.4.0”的 ADO.NET 提供程序

Posted

技术标签:

【中文标题】无法加载具有不变名称“System.Data.SqlServerCe.4.0”的 ADO.NET 提供程序【英文标题】:ADO.NET provider with invariant name 'System.Data.SqlServerCe.4.0' could not be loaded 【发布时间】:2014-06-27 16:12:43 【问题描述】:

实体框架提供程序类型“System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact”在应用程序配置文件中为具有不变名称“System.Data.SqlServerCe.4.0”的 ADO.NET 提供程序注册加载。确保使用了程序集限定名称并且程序集可供正在运行的应用程序使用。

上面是我在尝试使用 Breeze / Entity Framework 创建元数据时收到的错误消息。 Nuget 似乎搞砸了一些东西,但不清楚是什么,也不清楚它试图从哪里读取程序集。任何想法都将受到欢迎。

【问题讨论】:

我认为你应该安装this NuGet package。 谢谢 Gert 但那是我已经安装的。如上所示,正是 System.Data.SqlServerCe.4.0 在运行时导致了问题。 ***.com/questions/19821284/… 【参考方案1】:

我遇到了同样的问题。您已安装 Sql Compact,但缺少 Sql Compact 的 EntityFramework 扩展。您需要通过包管理器控制台或 nuget 包管理器安装它。控制台脚本是:

Install-Package EntityFramework.SqlServerCompact 

【讨论】:

【参考方案2】:

尝试在包管理器控制台中针对 EF 代码优先项目运行 update-database 命令时收到此错误消息。在搜索此特定错误消息时,我一直返回此请求,但安装 EntityFramework.SqlServerCompact nuget 并没有在我的场景中解决它。

我的解决方案是确保默认启动项目未设置为多个启动项目(在我的情况下它需要是 Web 项目),并且包管理器中的默认项目设置为您的 EF 项目'正在尝试从中运行迁移。

我发布此解决方案是为了帮助遇到相同问题的任何人,因为我在这里找不到解决方案,这是出现的第一个问题。

当我忘记并犯同样的错误时,我可能会在几个月后自己回到这个问题!

【讨论】:

我需要这两个答案。包“EntityFramework.SqlServerCompact”需要与 EF Context、Migrations 等安装在同一个项目中。注意:几个月前我已经更新到 EF 的较新版本,但显然没有得到“EntityFramework.SqlServerCompact” " 安装在正确的项目中。

以上是关于无法加载具有不变名称“System.Data.SqlServerCe.4.0”的 ADO.NET 提供程序的主要内容,如果未能解决你的问题,请参考以下文章

具有不变名称“System.Data.SqlServerCe.4.0”的 ADO.NET 提供程序未注册

找不到具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架提供程序。

找不到具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架提供程序。

找不到具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架提供程序

错误:找不到具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架提供程序

具有不变名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序未在机器或应用程序配置文件中注册