Entity Framework 生成一个包含不存在的列的 LINQ 查询

问题描述 投票:0回答:1

我在MySQL数据库中有一个名为

my_table
的表:

Name  | Datatype | PK | AI
==========================
id      INT        Y    Y
myCol   LONGTEXT   N    N

我有这个模型类:

public class MyTableRecord
{
    [Key]
    public int id { get; set; }
    
    public string? myCol { get; set; }
}

我的 ApplicationDbContext 类中有这个成员:

public DbSet<MyTableRecord> my_table { get; set; }

我正在尝试运行这段代码:

var Records = _dbContext.my_table.Where(x => x.myCol == "123").ToList();

但是当我这样做时我得到了这个错误:

MySqlException: Unknown column 'm.MyTableRecordid' in 'field list'

生成的 LINQ 查询如下所示:

SELECT `m`.`id`, `m`.`MyTableRecordid`, `m`.`myCol`
  FROM `my_table` AS `m`
  WHERE `m`.`myCol` = '123'

我的问题是:

MyTableRecordid
是从哪里来的,如何避免这个不存在的列在我执行查询时导致这个错误?

c# entity-framework linq asp.net-core-mvc
1个回答
0
投票

它是由 EF Core 自动生成的,因为你有

[Key]
属性。

像这样修改你的模型:

public class MyTableRecord
{
    [Key]
    [Column("id")]
    public int Id { get; set; }

    [Column("myCol")]
    public string? MyCol { get; set; }
}

显式添加

[Column]
属性,帮助 EF Core 正确映射名称。

© www.soinside.com 2019 - 2024. All rights reserved.