mysql和c#实体框架“providerincompatibleexception”

vsdwdz23  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(452)

我将按照mysql教程介绍实体框架,如下所示:https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework60.html
我已经通过nuget在我的项目中安装了:
-实体框架v6.2.0
-mysql.data.entity版本6.10.7
以及它们相应的依赖关系。
我已经安装了mysql connector/netv8.0.11。
我将provider和connectionstring添加到app.config:

<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <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.Entity.EF6, Version=6.10.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </providers>
  </entityFramework>

  <connectionStrings>
    <add name="mysql" connectionString="Server=localhost,3306;Database=eneagramas;Uid=root;Pwd=1234;" providerName="MySql.Data.MySqlClient" />
  </connectionStrings>

基本上我遵循了官方文档中的所有说明,这是我的上下文类:

class MyContext : DbContext
{
    public MyContext() : base("mysql")
    {
        //nothing here
    }

    public DbSet<Humans> Humans { get; set; }
}

但是我在访问db时遇到了这个错误:

System.Data.Entity.Core.ProviderIncompatibleException
  HResult=0x80131501
  Message=The provider did not return a ProviderManifestToken string.
  Source=EntityFramework
  StackTrace:[...]

Inner Exception 1:
MethodAccessException: Attempt by method 'MySql.Data.MySqlClient.MySqlProviderServices.GetDbProviderManifestToken(System.Data.Common.DbConnection)' to access method 'MySql.Data.MySqlClient.MySqlConnection.get_Settings()' failed.

我检查了我的数据库凭证,它们很好
服务器已启动并正在运行
我尝试使用的数据库存在

gzszwxb4

gzszwxb41#

不能将mysql.data 8.0.11与mysql.data.entity 6.10.7一起使用;主要版本不兼容。
oracle将包重命名为mysql.data.entityframework for v8。卸载mysql.data.entity,改为安装mysql.data.entityframework。

相关问题