由于MySQL库中存在错误,因此我已将C#项目从MySQL ADO.NET库切换到MySQL连接器。
与上述问题有关的上一个问题:StackOverFlow Question
我已经使用MySql Connector文档作为切换库的参考。
更改库之后,现有项目中的MySQL关键字触发了一些新错误。
1)MySqlConnection
在专用MySqlConnection connection;
行中。
错误:表示与MySQL Server数据库的打开连接。这个 类不能被继承。两者都存在类型“ MySqlConnection” “ MySql.Data”和“ MySqlConnector”。
2)MySqlException
行中的catch (MySqlException ex)
。
错误:当MySQL返回错误时,抛出异常。这个班 无法继承。两种类型都存在“ MySqlException”类型 “ MySql.Data”和“ MySqlConnector”。
3)MySqlCommand
行中的MySqlCommand cmd = new MySqlCommand();
。
错误:表示要对MySQL数据库执行的SQL语句。 这个类不能被继承。两者都存在类型“ MySqlCommand” “ MySql.Data”和“ MySqlConnector”。
4)MySqlDbType
行中的cmd.Parameters.Add("?jobNo", MySqlDbType.VarChar).Value = (values[0]);
。
错误:指定MySQL特定字段的数据类型,属性, 在MySql.Data.MySqlClient.MySqlParameter中使用。方式 “ MySqlDbType”同时存在于“ MySql.Data”和“ MySqlConnector”中。
关于如何减轻上述错误的任何建议?
答案 0 :(得分:2)
主要错误是:
“ MySql.Data”和“ MySqlConnector”中都存在类型“ MySqlConnection”。
您的项目似乎同时引用了MySql.Data.dll
和MySqlConnector
。使用NuGet软件包管理器卸载MySql.Data
软件包,并确保已从csproj,MySql.Data.dll
等中删除packages.config
引用。
(在高级方案中,您可以使用extern alias来引用两个库,但我强烈不建议这样做:它可能导致创建两个连接池,启动两个清理线程,等等。)< / p>
答案 1 :(得分:1)
在'MySql.Data'和'MySqlConnector'中都存在类型'MySqlConnection'表示在两个程序集中都存在该类型,这导致了不明确的引用。通常,您可以使用NuGet软件包管理器通过MySql.Data.dll
命令简单地删除Uninstall-Package MySql.Data
引用(并删除该程序集的所有可能的跟踪记录),然后应解决引用问题,但是在某些情况下,您可以执行以下步骤: / p>
转到参考属性,并在所有MySqlConnector
语句之前设置别名using
进行汇编,例如extern alias MySqlConnectorAlias;
。
在步骤(1)中使用别名的引用,例如MySqlConnectorAlias::MySql.Data.MySqlClient.MySqlConnection
。
(仅适用于.NET Core)在使用步骤(1)和(2)之前,编辑包含ChangeAliasesOfStrongNameAssemblies
的.csproj文件,如下所示:
<Project Sdk="Microsoft.NET.Sdk.Web">
<!-- other stuff -->
<Target Name="ChangeAliasesOfStrongNameAssemblies" BeforeTargets="FindReferenceAssembliesForReferences;ResolveReferences">
<ItemGroup>
<ReferencePath Condition="'%(FileName)' == 'MySqlConnector'">
<Aliases>MySqlConnectorAlias</Aliases>
</ReferencePath>
</ItemGroup>
</Target>
<!-- other stuff -->
</Project>