Вставка данных в столбец jsonb PostgreSQL с помощью Daper.Net и NPGSQL - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь вставить данные JSON в столбец JSONB PostgreSQL, используя Dapper.Net.

Документация NPGSQL для 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?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Похоже, что изменение оператора SQL на следующее исправило его.

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

Кроме того, нет необходимости указывать тип в сопоставлении параметров.

dp.Add("jb", stringOfJsonData)
0 голосов
/ 02 июля 2018

NpgsqlDbType и DbType - два разных перечисления, вы не можете просто привести одно в другое ...

Вам нужно будет настроить свойство NpgsqlDbType для создаваемых и отправляемых им NpgsqlParameters. IIRC есть способ указать пользовательские параметры.

...