Я обновляю приложение от Npgsql 2.2 до Npgsql 3.1. Он использует много перечислений и у меня есть много ошибок, как это:Может ли Npgsql 3.1 автоматически конвертировать между перечислениями PostgreSQL и текстом, например, Npgsql 2.2?
Npgsql.PostgresException : 42804: column "my_column" is of type my_enum but expression is of type text
Это, кажется, происходит даже с простым INSERT, как этого
INSERT INTO my_table (col1, col2, col3, ...) SELECT $1, $2, $3, ... RETURNING 1 AS _row_affected
Каждое значение столбца добавляется в качестве параметра с помощью NpgsqlCommand.Parameters.AddWithValue(name, value)
(без указания типа). Тип .NET в этом случае равен string
.
В Npgsql 2.2 это сработало, потому что оно прозрачно преобразует текст в перечисления Postgres и наоборот. Есть ли способ получить такое же поведение в версии 3.1? Я знаю, что теперь он обрабатывает перечисления изначально, что может быть полезно, но действительно действительно упростит обновление, если бы я мог снова использовать перечисления, работающие как текст!
Не могли бы вы разместить какой-нибудь код, чтобы показать, чего именно вы пытаетесь достичь? Npgsql 3.1 позволяет вам прозрачно читать перечисления как строки, но может быть что-то необработанное ... –
Я на самом деле пытаюсь вставить в этом случае, а не читать. Я добавил очень упрощенную версию. Реальный код намного сложнее, поэтому может быть и больше, о чем я не знаю. – EM0