我有一个使用MariaDB和Entity Framework 6的C#ASP.NET MVC项目。
该项目在Visual Studio 2017中完成,花了我很长时间仔细检查我是否已按照NuGet包MySql.Data 8.0.13和{{3的形式)添加了适当的MySQL连接器的程序集引用。 }}(均由Oracle正式发布),因为在调试时浏览视图时出现以下错误:
具有不变名称'MySql.Data.MySqlClient'的ADO.NET提供程序未在计算机或应用程序配置文件中注册。
直到我放弃它并尝试安装MySql.Data.EntityFramework 8.0.13,之后它才起作用。除了web.config
文件以外,NuGet均未进行任何更改。
我检查了安装程序放在%ProgramFiles%\MySql\Connector
下的程序集,它们与NuGet提取的程序集完全相同。哎呀,我什至删除了整个文件夹,它仍然有效。
有什么作用? NuGet软件包是否缺少应执行的某些步骤?
答案 0 :(得分:3)
我怀疑Connector / NET 8.0安装程序修改了C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config
文件,该文件由计算机上的所有.NET应用程序共享。不幸的是,这是计算机上的本地更改,这意味着您的应用程序在部署后可能无法正常运行。
解决方案是将MySql.Data添加到您的app.config
(或Web.config
)文件中。我不确定NuGet软件包是否旨在自动执行此操作。
每the Oracle docs,将此信息添加到app.config
:
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL"
type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=8.0.13.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>