繁体   English   中英

Npgsql.PostgresException 42703:关系“posts”的“Created”列不存在

[英]Npgsql.PostgresException 42703: column "Created" of relation "posts" does not exist

目前我正在使用 .NET Core 和 PostgreSQL 开发一个小项目。 对于我的数据访问,我想使用Dapper.Contrib 现在,我面临以下问题:

以下代码段显示了CREATE_DATABASE.sql

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

CREATE TABLE posts (
    id UUID DEFAULT uuid_generate_v4 (),
    created BIGINT,
    value VARCHAR NOT NULL,
    PRIMARY KEY (Id)
);

以下是我在 .NET Core 中的模型类

[Table("posts")]
public class Post
{
    [Column("id")]
    public Guid Id { get; set; }

    [Column("created")]
    public long Created { get; set; }

    [Column("value")]
    public string Value { get; set; }
}

insert 方法看起来像这样(它在基类中。在这种情况下 T 是 Post 类型):

public void Insert(T entity)
{
    _connection.Insert(entity);
}

尝试插入Post对象时,我遇到了以下错误:

Ein Ausnahmefehler des Typs "Npgsql.PostgresException" ist in System.Private.CoreLib.dll aufgetreten.: '42703: column "Created" of relation "posts" does not exist

当将NpgsqlLogManager.Provider设置为new ConsoleLoggingProvider(NpgsqlLogLevel.Trace, true, true); 记录了以下INSERT语句:

DEBUG [14313] Executing statement(s):
        insert into posts ("Created", "Value") values ($1, $2) RETURNING Id

那么,问题出在哪里呢? 我认为Dapper.Contrib在属性方面做得很好,但显然不是。

除了将模型属性重命名为小写外,有人知道如何解决此问题吗?

到目前为止,谢谢你。

似乎 Dapper.Contrib 不允许指定 Column 属性(但它允许指定Table 属性)。 但它确实支持属性映射器的自定义列。

有关如何实现此映射的更多详细信息,请参阅此帖子

使用 Dapper.Contrib,有多种方法可以映射表名,但显然无法映射列名。 此功能计划用于 2.x 版本。 2.x版本发布 但问题仍然存在。 查看发行说明,功能尚未添加。

请参阅答案以了解其他支持列名映射的 Dapper 查询生成器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM