繁体   English   中英

实体框架使用错误的连接提供程序

[英]Entity Framework using the wrong connection provider

我正在尝试将 Entity Framework 5(代码优先)用于 ASP.NET Web 窗体应用程序,我以前有一个使用 MySQL 连接运行的基本实现,我也成功地使用 SQL Server Compact 4 处理桌面应用程序.

我遇到的问题是使用 EF5 时出现错误

在配置中找不到指定的商店提供程序,或者指定的商店提供程序无效。

这是非常小的帮助。

升级到 EF6-rc1 给了我更有用的错误

具有不变名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册,或者无法加载。 有关详细信息,请参阅内部异常。

至少我现在知道“问题”是什么。

我的问题是我已经从项目中删除了所有 MySQL 的痕迹,项目没有理由尝试加载 MySQL 提供程序。

<entityFramework>
  <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
  <parameters>
    <parameter value="System.Data.SqlServerCe.4.0" />
  </parameters>
</defaultConnectionFactory>
<providers>
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
  <provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />
</providers>

<connectionStrings>
<add name="im_customerdb" connectionString="Data Source=|DataDirectory|\CustomerData.sdf" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

这些是我的 web.config 文件的摘录,如果有任何其他相关部分可能指向解决方案,请告诉我。

我已经在解决方案中的每个文件中对 MySQL 一词进行了文本搜索,并且没有对 MySQL 的引用。 我已经在源代码控制之外检查了项目的干净版本,以确保在清除项目构建文件时我没有遗漏任何文件。

任何人都可以提供有关我应该在哪里查看以确定 EF 为何坚持加载 MySQL 提供程序的任何线索?

问候, 安东尼

*编辑: *只是添加异常在第一次访问数据库上下文时抛出,从堆栈跟踪中,在初始化数据库时抛出异常。 我还注意到一些非常奇特的东西; 数据库文件被正确创建,看起来EF然后拒绝使用它并尝试使用MySQL。

问题很老,但可能这对某人有帮助。

我在从 Oracle 过渡到 MS SQL Server 时遇到了同样的问题。 最终,代码迁移似乎是问题的根本原因。 在切换到另一个数据库提供程序后,您不能将它们保持原样。 因此,您必须为新的数据库提供程序重新生成迁移。

我在不同的分辨率下遇到了同样的问题,所以我会继续在这里发布它供下一个搜索的人使用。

我在<connectionStrings></connnectionStrings>部分的 web 配置中列出了我的连接字符串。 它似乎正在读取连接字符串,但不是providerName

我看了很长时间才意识到我不必要地把它放在了<runtime></runtime>部分。

当我将<connectionStrings>放回<configuration>的根目录时,Entity Framework 再次开始使用正确的提供程序。

我最近遇到了同样的问题,您的 App.config 文件中存在问题。 只需重新创建它,它就会起作用。 (创建一个黑色项目并复制其默认的 app.config 并替换它)。 然后重新安装nuget包。

一切顺利。

上面的答案都没有为我解决问题。 我最终创建了一个新的解决方案并复制了所有源代码(web.config 和 Migrations 除外)并且它起作用了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM