我将按照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.
我检查了我的数据库凭证,它们很好
服务器已启动并正在运行
我尝试使用的数据库存在
1条答案
按热度按时间gzszwxb41#
不能将mysql.data 8.0.11与mysql.data.entity 6.10.7一起使用;主要版本不兼容。
oracle将包重命名为mysql.data.entityframework for v8。卸载mysql.data.entity,改为安装mysql.data.entityframework。