我在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
是从哪里来的,如何避免这个不存在的列在我执行查询时导致这个错误?
它是由 EF Core 自动生成的,因为你有
[Key]
属性。
像这样修改你的模型:
public class MyTableRecord
{
[Key]
[Column("id")]
public int Id { get; set; }
[Column("myCol")]
public string? MyCol { get; set; }
}
显式添加
[Column]
属性,帮助 EF Core 正确映射名称。