具有Entity Framework 6和PostgreSQL的Mono中不存在列Extent1.Id

我试图使用包NpsqlNpsql.EntityFramework映射到具有Entity Framework的PostgreSQL数据库。 我有一个包含下表的数据库:

 CREATE TABLE IF NOT EXISTS Crops ( Id INT PRIMARY KEY NOT NULL, Name TEXT NOT NULL, SowingMonths INT ); 

Crop模型如下所示:

 public class Crop { public int Id { get; set; } public string Name { get; set; } public Month SowingMonths { get; set;} //Month is an enum } 

在数据库上下文中,我将模式映射到public,因为PostgreSQL中默认情况下所有表都在模式公共中。

 protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.HasDefaultSchema("public"); } 

现在,当我打开试图访问DbContext的Crops的视图时,我收到以下消息:

Npgsql.NpgsqlException
错误:42703:列Extent1.Id不存在
描述:HTTP 500.Error处理请求。
详细信息:非Webexception。 exception来源(应用程序或对象的名称):Npgsql。
exception堆栈跟踪:
at Npgsql.NpgsqlState + d__0.MoveNext()[0x00000] in:0 at Npgsql.ForwardsOnlyDataReader.GetNextResponseObject(Boolean cleanup)[0x00000] in:0

好消息是数据库现在可以找到表(它最初不能 ,但它可以与OnModelCreating方法中的公共模式映射)。 但是,它找不到列名Extend.Id

为什么它试图寻找Extend.Id超出我的范围。 我们已将Crops模型上的属性定义为Id ,为什么它会查找Extend.Id ? 但考虑到这种情况,我怎样才能让它发挥作用? 我可以使用属性Extend1.Id而不是Id来创建数据库表吗? 如果是这样,我该怎么做?

谢谢!

我确信您的代码中某处存在打字错误。 表“Id”根本不存在。 可能是大写字母?