2015-08-10 1 views
0

Скажем, у меня есть таблица под названием «exampletable» в postgresql с 100 типизированными полями citext, назовем их «field1», «field2» и т. Д. ... Как читать эти поля с помощью npgsql? В идеале я хотел бы использовать следующий SQL:Хо, читаю ли поле postgresql citext с npgsql 3.0.0?

select * from exampletable 

Но когда я выполняю с помощью SQL npgsql 3.0.0 я получаю следующее NotSupportedException:

«Поле field1 имеет тип в настоящее время неизвестный Npgsql (OID 16466). Вы можете получить его в виде строки, пометив его как неизвестно, пожалуйста, см справку ...»

чтобы преодолеть это, я мог бы вручную бросить все поля в текст запроса SQL, как так:

select field1::text, field2::text, ... field99::text, field100::text from exampletable 

Как вы можете видеть, это чрезвычайно многословно и громоздко. Должен ли я вручную отбрасывать все поля в текст в моем запросе или есть ли более простой способ настроить npgsql, чтобы разрешить типы citext в передаче? Как мне обрабатывать другие нестандартные типы расширений в postgresql?

Любая помощь будет оценена по достоинству.

Вопрос о бонусе: Я попытался найти FAQ, на который ссылается сообщение об исключении, но я ничего не нашел. Знаете ли вы, на какой странице ссылается сообщение?

ответ

0

Извините, этот тип, должно быть, проскользнул через трещины. У меня есть opened an issue for it и будет реализован для версии 3.0.1.

В то же время вы можете либо вручную нажимать, как вы, либо установить значение AllResultTypesAreUnknown для NpgsqlCommand в true. Это заставит Npgsql запрашивать все столбцы набора результатов в тексте, доступ к которому вы можете получить. Часто задаваемые вопросы все еще продолжаются и еще не в сети, извините за это.

+0

Спасибо @Shay :) – JohannesH

+1

Создал раздел FAQ с информацией об этом: http://www.npgsql.org/doc/faq.html –

+0

@ShayRojansky У меня есть аналогичная проблема, но это происходит, когда поле citext используется в оператор where с параметром строки DbType, тогда значение и поле преобразуются в :: текст, и выражение становится чувствительным к регистру. Есть ли способ исправить это или какое-то обходное решение? – khorvat