添加 Mysql 实体框架时,Visual Studio 中的表“dbname.dbname.tablename”不存在错误

Posted

技术标签:

【中文标题】添加 Mysql 实体框架时,Visual Studio 中的表“dbname.dbname.tablename”不存在错误【英文标题】:Table 'dbname.dbname.tablename' doesn't exists error in Visual Studio when adding Mysql Entity Framework 【发布时间】:2021-03-01 19:35:27 【问题描述】:

我正在尝试在 Visual Studio 中添加带有实体框架的 mysql。我正在使用 MySQL Server 8.0.12 以及 8.0.12 Connector/MySql.data。 错误:MysqlException:表 'dbname.dbname.tablename' 不存在。通常我有表但 dbname 名称显示两次。

我的代码很简单,我想列出我表中的所有数据:

 using (sakilaEntities db = new sakilaEntities())
 
     var list =  db.country.ToList();
 

我遇到了错误。

更新:卸载 MySQL Server 8.0.12 和 MySQL Connector 8.0.12,然后安装 MySQL Server&Connector 8.0.19。在您的网络配置中添加以下代码。

<providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.0.19.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>

【问题讨论】:

您好,这可能与Generating wrong query on Entity Framework 6. Appending table name twice 或VS 2019 and MySQL Entity Framework duplicate database name 重复。请查看这些内容,如果您找到所需内容,请告诉我们 【参考方案1】:

在生成的模型类中,删除数据库名称。所以它应该是 [Table("Table")] 而不是 [Table("Database.Table")]。示例如下:

[Table("Owners")]
public partial class Owners

    public int ID  get; set; 

    [StringLength(100)]
    public string ListName  get; set; 

    [Column("Owner", TypeName = "text")]
    [StringLength(65535)]
    public string Owner  get; set; 

    [StringLength(1073741823)]
    public string OwnerProperties  get; set; 

【讨论】:

以上是关于添加 Mysql 实体框架时,Visual Studio 中的表“dbname.dbname.tablename”不存在错误的主要内容,如果未能解决你的问题,请参考以下文章

适用于 Visual Studio 2012/2013 的 MySQL

Visual Studio 2012 上的 mySQL 数据源

实体框架在 Visual Studio 中失去与连接字符串的绑定

Visual Studio 找不到实体框架

实体框架代码迁移 - 卡在初始迁移上

在 Visual Studio 中生成 ERD 图