C# 实体框架6和PostgreSQL的Mono中不存在列Extent1.Id

C# 实体框架6和PostgreSQL的Mono中不存在列Extent1.Id,c#,entity-framework,postgresql,mono,ef-fluent-api,C#,Entity Framework,Postgresql,Mono,Ef Fluent Api,我正在尝试使用包和映射到具有实体框架的PostgreSQL数据库。我有一个包含下表的数据库: CREATE TABLE IF NOT EXISTS Crops ( Id INT PRIMARY KEY NOT NULL, Name TEXT NOT NULL, SowingMonths INT ); 裁剪模型如下所示: public class Crop { public int Id { ge

我正在尝试使用包和映射到具有实体框架的PostgreSQL数据库。我有一个包含下表的数据库:

CREATE TABLE IF NOT EXISTS Crops (
  Id            INT PRIMARY KEY     NOT NULL,
  Name          TEXT                NOT NULL,
  SowingMonths  INT
);
裁剪
模型如下所示:

public class Crop
{
    public int Id { get; set; }
    public string Name { get; set; }
    public Month SowingMonths { get; set;} //Month is an enum
}       
在数据库上下文中,我将模式映射到public,因为在PostgreSQL中,默认情况下所有表都在模式public中

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.HasDefaultSchema("public");
}
现在,当我打开试图访问DbContext的视图时,我得到以下消息:

Npgsql.NpgsqlException
错误:42703:列Extent1.Id不存在
说明:HTTP 500。错误处理请求。
详细信息:非web异常。异常源(应用程序或对象的名称):Npgsql。
异常堆栈跟踪:
位于Npgsql.NpgsqlState+d__0.MoveNext()[0x00000]in:0位于Npgsql.ForwardsOnlyDataReader.GetNextResponseObject(布尔清理)[0x00000]in:0

好消息是数据库现在可以找到表了(一开始可以,但通过
OnModelCreating
方法中的公共模式映射可以找到)。但是,它找不到列名
Extend.Id

我无法理解为什么它试图寻找
Extend.Id
。我们已经将
Crops
模型上的属性定义为
Id
,那么为什么它要查找
Extend.Id
?但考虑到这种情况,我如何才能让它工作?我可以用属性
Extend1.Id
而不是
Id
创建一个数据库表吗?如果是,我该怎么做


谢谢大家!

我确信您的代码中的某个地方存在印刷错误。表“Id”根本不存在。也许是大写字母?

谢谢你,英雄大师。事实确实如此。将列名改为大写后,问题就解决了!谢谢,谢谢。PS您能告诉我什么是
[Extent1]
吗?