Npgsql 3.1可以在PostgreSQL枚举和文本之间自动转换,就像Npgsql 2.2一样吗?

时间:2016-07-03 21:04:17

标签: npgsql

我正在将应用程序从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 $1, $2, $3, ... RETURNING 1 AS _row_affected

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

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

1 个答案:

答案 0 :(得分:2)

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