为什么我仍然需要在计算机上安装mysql连接器,尽管有合适的nuget包?

dxxyhpgq  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(307)

我有一个c#asp.net mvc项目,它使用了实体框架6的mariadb。
这个项目是在visual studio 2017中完成的,我花了很长时间反复检查是否添加了正确的mysql连接器程序集引用,它们是以nuget包mysql.data 8.0.13和mysql.data.entityframework 8.0.13的形式添加的(两者都是oracle正式发布的),因为我在调试时浏览视图时遇到以下错误:
具有固定名称“mysql.data.mysqlclient”的ado.net提供程序未在计算机或应用程序配置文件中注册。
直到我放弃了它,并尝试安装mysql connector/net8.0,之后就成功了。未对 web.config 文件,而不是由nuget执行的文件。
我检查了放在下面的组件 %ProgramFiles%\MySql\Connector 它们与nuget拉取的有点相同。见鬼,我甚至删除了整个文件夹,它仍然有效。
有什么好处?nuget包是否缺少一些应该执行的步骤?

xmq68pz9

xmq68pz91#

我怀疑connector/net8.0安装程序修改了 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config 文件,该文件由计算机上的所有.net应用程序共享。不幸的是,这是您计算机上的本地更改,这意味着您的应用程序在部署时可能无法正常工作。
解决方案是将mysql.data添加到 app.config (或 Web.config )文件。我不确定nuget包是否被设计成自动完成这个任务。
根据oracle文档,将此信息添加到 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>

相关问题