使用 Daper.Net 和 NPGSQL 将数据插入 PostgreSQL jsonb 列

Inserting data into PostgreSQL jsonb column with Daper.Net and NPGSQL

我正在尝试使用 Dapper.Net.

将 JSON 数据插入 JSONB PostgreSQL 列

NPGSQL Documentation for JSONB 给出了使用 NpgsqlDbType.Jsonb 数据类型的具体说明。

对于 Dapper,我尝试将其添加为自定义参数但没有成功。

using (var conn = myconnection)
{
    var sql = "INSERT INTO mytable (jsonbody) VALUES (@jb);";
    dp =  new DynamicParameters();
    dp.Add("jb", stringOfJsonData, (DbType)NpgsqlDbType.Jsonb);
    await conn.ExecuteAsync(sql,dp);                    
}                

我收到的错误是 System.NotSupportedException : The parameter type DbType.36 isn't supported by PostgreSQL or Npgsql

关于如何将这两个库一起用于 JSONB 的任何建议?

谢谢。

NpgsqlDbType 和 DbType 是两个不同的枚举,您不能简单地将一个转换为另一个...

您必须在它创建和发送的 NpgsqlParameters 上设置 NpgsqlDbType 属性。 IIRC 有一种方法可以指定自定义参数。

看来将 SQL 语句更改为以下内容可以解决问题。

var sql = "INSERT INTO mytable (jsonbody) VALUES (CAST(@jb AS json));";

另外,参数映射中不需要指定类型

dp.Add("jb", stringOfJsonData)