我正在尝试使用实体框架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。
答案 0 :(得分:1)
问题是陈旧的,但可能会对某人有所帮助。
从Oracle过渡到MS SQL Server,我遇到了同样的问题。 最终,代码迁移似乎是问题的根本原因。 切换到另一个数据库提供程序后,您不能将它们保留为原样。 因此,您必须为新数据库提供程序重新进行迁移。
答案 1 :(得分:0)
I had the same issue with a different resolution, so I'll go ahead and post it here for the next person who searches.
I had my connection string listed where it could be found in the web config in the <connectionStrings></connnectionStrings>
section. It seemed to be reading the connection string, but not the providerName
.
I looked at it for a long time before realizing that I had needlessly put it inside the <runtime></runtime>
section.
When I put my <connectionStrings>
back in the root of <configuration>
, Entity Framework started using the right provider again.
答案 2 :(得分:0)
我最近遇到了同样的问题,您的App.config文件中有一个问题。 只需重新创建它即可。 (创建一个黑色项目并复制其默认app.config并替换它)。 然后重新安装nuget软件包。
祝一切顺利。
答案 3 :(得分:0)
以上答案均未解决我的问题。我最终创建了一个新的解决方案,并复制了所有源代码(web.config和Migrations除外),并且一切正常。