从MySQL ADO.NET库切换到MySQL连接器问题

时间:2018-09-20 00:57:18

标签: c# mysql ado.net

由于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”中。

关于如何减轻上述错误的任何建议?

2 个答案:

答案 0 :(得分:2)

主要错误是:

  

“ MySql.Data”和“ MySqlConnector”中都存在类型“ MySqlConnection”。

您的项目似乎同时引用了MySql.Data.dllMySqlConnector。使用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>

  1. 转到参考属性,并在所有MySqlConnector语句之前设置别名using进行汇编,例如extern alias MySqlConnectorAlias;

  2. 在步骤(1)中使用别名的引用,例如MySqlConnectorAlias::MySql.Data.MySqlClient.MySqlConnection

  3. (仅适用于.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>