Npgsql 3.1 能否像 Npgsql 2.2 那样在 PostgreSQL 枚举和文本之间自动转换?

Can Npgsql 3.1 automatically convert between PostgreSQL enums and text, like Npgsql 2.2 did?

我正在将应用程序从 Npgsql 2.2 升级到 Npgsql 3.1。它使用了很多枚举,我有很多这样的错误:

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 , , , ... RETURNING 1 AS _row_affected

使用NpgsqlCommand.Parameters.AddWithValue(name, value)(未指定类型)将每个列值添加为参数。在这种情况下,值的 .NET 类型是 string

在 Npgsql 2.2 中这行得通,因为它透明地将文本转换为 Postgres 枚举,反之亦然。有没有办法在 3.1 中获得相同的行为?我知道它现在本地处理枚举,这很有用,但如果我能让枚举再次作为文本工作,它真的会真的简化升级!

创建参数时,尝试将其 NpgsqlDbType 设置为未知,这应该会使 PostgreSQL 透明地将文本值转换为枚举。