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 透明地将文本值转换为枚举。
我正在将应用程序从 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 透明地将文本值转换为枚举。