C# 无法使用visual studio 2019连接MySQL数据库

C# 无法使用visual studio 2019连接MySQL数据库,c#,mysql,entity-framework,visual-studio-2019,C#,Mysql,Entity Framework,Visual Studio 2019,我正在尝试通过dotnet应用程序将MySQL数据库配置到中。为此,我安装了它 实体框架6(EF6) 通过nuget发布8.0.22版 App.config <entityFramework> <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" /> <providers> <prov

我正在尝试通过
dotnet
应用程序将
MySQL
数据库配置到中。为此,我安装了它

  • 实体框架6(EF6)
  • 通过nuget发布8.0.22版
  • App.config

    <entityFramework>
    <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory,  MySql.Data.Entity.EF6" />
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.0.22.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
      </provider></providers>
    
    
    
    当我试图添加数据库时,我发现以下错误

    我尝试了堆栈上的几乎所有解决方案,但都没有解决问题


    非常感谢您的帮助。

    这是一个明显的问题,错误只是说:

    实体框架数据库提供程序与此不兼容 实体框架的版本

    作为<强>引用< /强>,请考虑<强> > <>强>中的步骤,因为它描述了用于连接到MySQL数据库的两种.NET项目(.Net和.NETCore)。在您的情况下,只在Windows上遵循EF6的最低要求,并注意.NET Framework版本兼容性

    通过将配置文件与项目中的程序集引用进行比较,小心参考的内容和安装的内容。我不知道您对项目依赖关系的控制有多好如果您比较,您会发现这与您的完全不同。可能还有一些不必要的错误,我们在离你们很远的地方无法控制,我们也无法重现这个问题


    最后,检查程序集引用和配置文件中的内容。进行深入更改后,您可能必须重新启动Visual Studio才能跟踪这些更改是否得到确认。

    这是一个明显的问题,错误只是说:

    实体框架数据库提供程序与此不兼容 实体框架的版本

    作为<强>引用< /强>,请考虑<强> > <>强>中的步骤,因为它描述了用于连接到MySQL数据库的两种.NET项目(.Net和.NETCore)。在您的情况下,只在Windows上遵循EF6的最低要求,并注意.NET Framework版本兼容性

    通过将配置文件与项目中的程序集引用进行比较,小心参考的内容和安装的内容。我不知道您对项目依赖关系的控制有多好如果您比较,您会发现这与您的完全不同。可能还有一些不必要的错误,我们在离你们很远的地方无法控制,我们也无法重现这个问题


    最后,检查程序集引用和配置文件中的内容。进行深入更改后,您可能必须重新启动Visual Studio,以便跟踪这些更改是否得到确认。

    因为错误表明您使用的是不兼容的提供程序。根本原因可能是您有重复的
    MySql.Data.MySqlClient
    提供程序,一个从
    MySql.Data.Entity.EF6
    程序集加载,另一个从
    MySql.Data.EntityFramework
    程序集加载

    <provider invariantName="MySql.Data.MySqlClient" 
        type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
    
    ...
    <provider invariantName="MySql.Data.MySqlClient"
        type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.0.22.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
    
    另外,请注册
    dbProviderFactorys

    <configuration>
        <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.22.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
           </DbProviderFactories>
        </system.data>
    <configuration>
    
    
    

    注意:始终更新版本号以匹配您正在使用的MySql.Data.dll程序集中的版本号。

    因为错误表明您正在使用不兼容的提供程序。根本原因可能是您有重复的
    MySql.Data.MySqlClient
    提供程序,一个从
    MySql.Data.Entity.EF6
    程序集加载,另一个从
    MySql.Data.EntityFramework
    程序集加载

    <provider invariantName="MySql.Data.MySqlClient" 
        type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
    
    ...
    <provider invariantName="MySql.Data.MySqlClient"
        type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.0.22.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
    
    另外,请注册
    dbProviderFactorys

    <configuration>
        <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.22.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
           </DbProviderFactories>
        </system.data>
    <configuration>
    
    
    

    注意:始终更新版本号以匹配您正在使用的MySql.Data.dll程序集中的版本号。

    如错误消息所述,您有一个不兼容的MySql连接器,请尝试全部删除并重新创建。 您可以直接从源代码处尝试@

    尝试将配置更改为

    <connectionStrings>
    <add name="MyContext" providerName="MySql.Data.MySqlClient"
            connectionString="server=yourserver;port=3306;database=mycontext;uid=root;password=********    "/>
    </connectionStrings>
    <entityFramework>
    <defaultConnectionFactory     type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
    <providers>
        <provider invariantName="MySql.Data.MySqlClient"
            type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework"/>
        <provider invariantName="System.Data.SqlClient"
            type="System.Data.Entity.SqlServer.SqlProviderServices,     EntityFramework.SqlServer"/>
    </providers>
    </entityFramework>
    
    
    
    有很多有用的信息。

    正如错误消息所描述的,您有一个不兼容的mysql连接器,请尝试删除所有并重新创建。 您可以直接从源代码处尝试@

    尝试将配置更改为

    <connectionStrings>
    <add name="MyContext" providerName="MySql.Data.MySqlClient"
            connectionString="server=yourserver;port=3306;database=mycontext;uid=root;password=********    "/>
    </connectionStrings>
    <entityFramework>
    <defaultConnectionFactory     type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
    <providers>
        <provider invariantName="MySql.Data.MySqlClient"
            type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework"/>
        <provider invariantName="System.Data.SqlClient"
            type="System.Data.Entity.SqlServer.SqlProviderServices,     EntityFramework.SqlServer"/>
    </providers>
    </entityFramework>
    
    
    有很多有用的信息