【问题标题】:Inserting data into PostgreSQL jsonb column with Daper.Net and NPGSQL使用 Daper.Net 和 NPGSQL 将数据插入 PostgreSQL jsonb 列
【发布时间】:2018-12-10 07:32:33
【问题描述】:

我正在尝试使用 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 有什么建议吗?

谢谢。

【问题讨论】:

    标签: c# postgresql dapper npgsql


    【解决方案1】:

    似乎将 SQL 语句更改为以下已修复它。

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

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

    dp.Add("jb", stringOfJsonData)
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 例如,您可以使用this overload of AddWithValue。或者自己实例化一个 NpgsqlParameter,设置它的 NpgsqlDbType 属性并将其添加到命令的参数集合中。
      猜你喜欢
      • 1970-01-01
      • 2022-11-02
      • 2018-07-05
      • 2020-06-28
      • 1970-01-01
      • 2019-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多