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