我在使用Entity Framework 6连接到mysql数据库时遇到错误
访问数据库时出错。这通常意味着 与数据库的连接失败。检查连接字符串是否为 更正并且正在使用适当的DbContext构造函数 指定它或在应用程序的配置文件中找到它。
这是我的代码:
public class TestDbContext : DbContext
{
public TestDbContext()
: base("name="mysqldb")
{
}
public DbSet<holidays> holidays { get; set; }
}
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </configSections>
<connectionStrings>
<add name="mysqldb" providerName="MySql.Data.MySqlClient" connectionString="server=localhost;userid=root;password=admin;database=bobdata;/> </connectionStrings>
<entityFramework>
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
<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"></provider>
</providers>
</entityFramework>
在下面给出的内部异常消息
中{&#34;尝试方法 &#39; MySql.Data.MySqlClient.MySqlProviderServices.GetDbProviderManifestToken(System.Data.Common.DbConnection)&#39; 访问方法 &#39; MySql.Data.MySqlClient.MySqlConnection.get_Settings()&#39;失败&#34;}
答案 0 :(得分:8)
您似乎正在使用MySql.Data.Entity 6.10.7。我猜你也在使用MySql.Data 8.0.11。
这两个库不兼容。适用于v8.x的Oracle renamed the package至MySql.Data.EntityFramework
。您需要卸载MySql.Data.Entity
并安装MySql.Data.EntityFramework
。
答案 1 :(得分:-1)
我认为问题是因为您在连接字符串中使用了userid而不是UID,将userid更改为UID
答案 2 :(得分:-1)
根据您提供的信息(还有其他可能导致此问题的事情)并假设凭据正确无误,值得尝试:
在TestDbContext
课程中:
public class TestDbContext : DbContext
{
public TestDbContext()
: base("mysqldb")
{
}
public static TestDbContext Create()
{
return new TestDbContext();
}
public DbSet<holidays> holidays { get; set; }
}
在web.config中:
<add name="mysqldb" providerName="MySql.Data.MySqlClient" connectionString="server=localhost;database=bobdata;uid=root;password=admin;" />
根据评论更新:
如果您仍然收到错误,我建议您启动一个新项目,以建立成功的数据库连接并从那里逐步修改您的连接字符串。然后,您可以将此项目中已建立的设置复制到现有项目中。确保db上下文中的连接字符串名称与web.config中的相同,并从“标准”连接字符串开始,如下所示:
public class TestDbContext : DbContext
{
public TestDbContext() : base("ThisIsMyConnectionStringName")
{
}
public static TestDbContext Create()
{
return new TestDbContext();
}
public DbSet<holidays> holidays { get; set; }
}
<connectionStrings>
<add name="ThisIsMyConnectionStringName" connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\My-Database-Name.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>
使用此设置,数据库文件(名为My-Database-Name.mdf)将驻留在App_Data文件夹中。然后在那里搜索连接字符串设置(有大量资源)并逐步将事物更改为您想要的内容。这样,您将从实际拥有数据库的地方和连接作为起点,而不是尝试从可能由许多事情引起的错误消息向后工作。