[英]Using a different connection provider for Entity Framework on ASP.NET Core
[英]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.