【问题标题】:Column Extent1.Id does not exist in Mono with Entity Framework 6 and PostgreSQL实体框架 6 和 PostgreSQL 的 Mono 中不存在列 Extent1.Id
【发布时间】:2015-01-12 22:45:17
【问题描述】:

我正在尝试使用包NpsqlNpsql.EntityFramework 映射到带有实体框架的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
}       

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

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 ] 在 :0

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

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

谢谢!

【问题讨论】:

    标签: c# entity-framework postgresql mono ef-fluent-api


    【解决方案1】:

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

    【讨论】:

    • 谢谢大侠。情况确实如此。将列名更改为大写后,问题就解决了!谢谢你,谢谢你,谢谢你。 PS你能告诉我[Extent1]是什么吗?
    猜你喜欢
    • 1970-01-01
    • 2014-04-04
    • 2016-07-21
    • 2015-03-18
    • 2017-12-10
    • 2014-11-08
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多