【问题标题】:Npgsql.PostgresException 42703: column "Created" of relation "posts" does not existNpgsql.PostgresException 42703:关系“帖子”的“创建”列不存在
【发布时间】:2021-11-06 16:16:00
【问题描述】:

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

下面的sn-p显示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 在属性方面做得很好,但显然不是。

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

到目前为止,谢谢。

【问题讨论】:

    标签: postgresql .net-core dapper dapper-contrib


    【解决方案1】:

    使用 Dapper.Contrib,有一些方法可以映射表名,但显然,有 no waymap 列名。此功能计划用于 2.x 版本。版本2.x is released;但问题仍然存在。看the release notes,功能还没有添加。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
      猜你喜欢
      • 1970-01-01
      • 2022-08-10
      • 2014-07-25
      • 1970-01-01
      • 1970-01-01
      • 2019-07-28
      • 2013-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多