尽管拥有正确的NuGet软件包,为什么我仍需要在计算机上安装MySQL连接器?

时间:2018-11-29 16:47:18

标签: c# mysql visual-studio entity-framework nuget

我有一个使用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软件包是否缺少应执行的某些步骤?

1 个答案:

答案 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>