我有一个使用 MariaDB 和 Entity Framework 6 的 C# ASP.NET MVC 项目。
这个项目是在 Visual Studio 2017 中制作的,我花了很长时间仔细检查是否以 NuGet 包的形式添加了正确的 MySQL 连接器的程序集引用MySql.Data 8.0.13 and MySql.Data.EntityFramework 8.0.13(均由Oracle官方发布),因为我在调试时浏览视图时遇到以下错误:
具有固定名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册。
直到我放弃它并尝试安装MySQL 连接器/NET 8.0,之后就成功了。没有进行任何更改web.config
文件,而不是由 NuGet 执行的文件。
我检查了放置在下面的组件%ProgramFiles%\MySql\Connector
由安装程序执行,并且它们与 NuGet 拉取的内容完全相同。哎呀,我什至删除了整个文件夹,它仍然有效.
是什么赋予了? NuGet 包是否缺少应执行的某些步骤?
我怀疑 Connector/NET 8.0 安装程序修改了您的C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config
文件,该文件由计算机上的所有 .NET 应用程序共享。不幸的是,这是您计算机上的本地更改,这意味着您的应用程序在部署时可能无法正常工作。
解决方案是将 MySql.Data 添加到您的app.config
(or Web.config
) 文件。我不确定 NuGet 包是否被设计为自动执行此操作。
Per 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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)