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

Dam*_*yer 8 c# postgresql npgsql dapper

我正在尝试使用 Dapper.Net 将 JSON 数据插入到 JSONB PostgreSQL 列中。

用于JSONB文件Npgsql的给人使用的具体指示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);                    
}                
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢。

Dam*_*yer 8

似乎将 SQL 语句更改为以下内容修复了它。

var sql = "INSERT INTO mytable (jsonbody) VALUES (CAST(@jb AS json));";
Run Code Online (Sandbox Code Playgroud)

此外,无需在参数映射中指定类型。

dp.Add("jb", stringOfJsonData)
Run Code Online (Sandbox Code Playgroud)


Sha*_*sky 2

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

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