我已经把我的c#项目从mysql ado.net库切换到mysql connector,因为mysql库中有一个bug。
与上述问题有关的前一个问题:stackoverflow问题
我使用mysql连接器文档作为交换库的参考。
随着库的更改,现有项目中的mysql关键字出现了一些新的错误。
MySqlConnection
私下里MySqlConnection connection;
线路。
错误:表示到mysql服务器数据库的打开连接。不能继承此类。类型“mysqlconnection”同时存在于“mysql.data”和“mysqlconnector”中。MySqlException
在catch (MySqlException ex)
线路。
错误:当mysql返回错误时抛出异常。不能继承此类。类型“mysqlexception”同时存在于“mysql.data”和“mysqlconnector”中。MySqlCommand
在MySqlCommand cmd = new MySqlCommand();
线路。
错误:表示要对mysql数据库执行的sql语句。不能继承此类。类型“mysqlcommand”同时存在于“mysql.data”和“mysqlconnector”中。MySqlDbType
在cmd.Parameters.Add("?jobNo", MySqlDbType.VarChar).Value = (values[0]);
线路。
错误:指定在mysql.data.mysqlclient.mysqlparameter中使用的字段属性的mysql特定数据类型。类型“mysqldbtype”同时存在于“mysql.data”和“mysqlconnector”中。
关于如何减轻上述错误有什么建议吗?
2条答案
按热度按时间ttisahbt1#
主要错误是:
类型“mysqlconnection”同时存在于“mysql.data”和“mysqlconnector”中。
似乎您的项目正在引用这两个
MySql.Data.dll
以及MySqlConnector
. 卸载MySql.Data
使用nuget包管理器打包,并确保MySql.Data.dll
从你的csproj中删除了参考资料,packages.config
等。(在高级方案中,可以使用extern别名引用这两个库,但我强烈建议不要这样做:它可能会导致创建两个连接池、启动两个清理线程等。)
fjaof16o2#
类型“mysqlconnection”同时存在于“mysql.data”和“mysqlconnector”中,表示该类型同时存在于两个程序集中,这导致引用不明确。通常你可以简单地移除
MySql.Data.dll
使用nuget包管理器的引用Uninstall-Package MySql.Data
命令(并删除该程序集的所有可能痕迹),则应该解决引用问题,但在某些情况下,可以执行以下步骤:转到“引用属性”并设置别名
MySqlConnector
用于在所有using
陈述,例如。extern alias MySqlConnectorAlias;
.使用步骤(1)中别名的引用,例如。
MySqlConnectorAlias::MySql.Data.MySqlClient.MySqlConnection
.(仅适用于.net core)在使用步骤(1)和(2)之前,请编辑包含
ChangeAliasesOfStrongNameAssemblies
这样地: