Как использовать NpgSql для вставки массива строк в столбец Postgresql

Я пытаюсь вставить массив строк в столбец с помощью .NET. Это устаревшее приложение в VB.NET, но я могу легко преобразовать его из С#. Вот что я пробовал:

        p = New NpgsqlParameter("company_address", NpgsqlTypes.NpgsqlDbType.Array + NpgsqlTypes.NpgsqlDbType.Text)
        p.Value = data.company_address     ' <--- array of strings
        cmd.Parameters.Add(p)

Я либо получаю сообщение об ошибке «Невозможно преобразовать объект типа «System.String []» в тип «System.IConvertible» с указанным выше, либо я пытался использовать этот формат для значения: «{»string1», «string2» ,"string3"}', но затем я получаю сообщение об ошибке "Входная строка имеет неправильный формат". Я получил ту же ошибку, когда пытался: ARRAY['string1','string2','string3']

Так всегда ли массивы должны быть преобразованы в строку какого-то формата или можно каким-то образом использовать NpgSqlParameter для приема строкового массива?

Поле company_address определяется как String(). Версия Npgsql — 2.2.

Спасибо


person Tink    schedule 25.01.2018    source источник


Ответы (1)


Вам нужно сделать NpgsqlTypes.NpgsqlDbType.Array | NpgsqlTypes.NpgsqlDbType.Text (побитовое или), а не NpgsqlTypes.NpgsqlDbType.Array + NpgsqlTypes.NpgsqlDbType.Text.

Другой вариант - полностью опустить NpgsqlDbType и позволить Npgsql сделать вывод - когда он увидит массив строк, он автоматически отправит правильный тип.

person Shay Rojansky    schedule 26.01.2018
comment
Я не видел прототипа, который позволяет делать выводы - сработало как шарм - спасибо! - person Tink; 26.01.2018