C# 实体框架6和PostgreSQL的Mono中不存在列Extent1.Id
我正在尝试使用包和映射到具有实体框架的PostgreSQL数据库。我有一个包含下表的数据库: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
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]
吗?