繁体   English   中英

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

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

我正在尝试使用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);                    
}                

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

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

谢谢。

看来,将SQL语句更改为以下内容可以修复它。

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

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

dp.Add("jb", stringOfJsonData)

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

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

暂无
暂无

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

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