6

我正在尝试将 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。

4

4 回答 4

1

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

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

于 2016-07-12T13:08:05.897 回答
0

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

一切顺利。

于 2019-03-13T11:35:36.457 回答
0

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

于 2019-11-11T12:42:10.313 回答
0

我用不同的解决方案遇到了同样的问题,所以我会继续在此处发布,以供下一个搜索的人使用。

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

我看了很久才意识到我把它不必要地放在了这个<runtime></runtime>部分。

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

于 2018-02-26T18:01:50.497 回答