簡體   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