Npgsql 在 CommandBuilder DeriveParameters 上失败
Npgsql failing on CommandBuilder DeriveParameters
在尝试使用以下代码时,我收到此错误:
Message: Invalid parameter type: 277447
Source: Npgsql
程序在执行时爆炸:
NpgsqlCommandBuilder.DeriveParameters(cmd);
NpgsqlConnection conn = new NpgsqlConnection();
conn.ConnectionString = connection.ConnectionString;
conn.Open();
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "g_savedx";
cmd.CommandType = CommandType.StoredProcedure;
NpgsqlCommandBuilder.DeriveParameters(cmd);
cmd.Parameters["_cpatient"].Value = cpatient;
cmd.Parameters["o"].Value = olddx;
cmd.Parameters["n"].Value = newdx;
var rowsAffected = cmd.ExecuteNonQuery();
}
PostgreSQL 9.1 存储过程定义为:
FUNCTION g_savedx(_cpatient text, o view_dx, n view_dx)
RETURNS void
其中 view_dx 是 PostgreSQL 数据库中的简单表。
我做错了什么?
非常感谢任何帮助。
对于像我这样的新手,DeriveParameters 的上述用法是正确的——来自 Npgsql 的错误消息也是如此。基本问题是 PostgreSQL 存储函数的接口只能使用 NpgsqlDbType 枚举指定的 DbTypes。 NpgsqlDbType(此时)中不存在复合类型 "Object" 或 "View_dx",因此 DerviveParameters 失败。
我的解决方案是将对象序列化为 NpgsqlDbType 允许的一种或多种枚举,并相应地更改存储过程接口。
在尝试使用以下代码时,我收到此错误:
Message: Invalid parameter type: 277447 Source: Npgsql
程序在执行时爆炸:
NpgsqlCommandBuilder.DeriveParameters(cmd);
NpgsqlConnection conn = new NpgsqlConnection();
conn.ConnectionString = connection.ConnectionString;
conn.Open();
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "g_savedx";
cmd.CommandType = CommandType.StoredProcedure;
NpgsqlCommandBuilder.DeriveParameters(cmd);
cmd.Parameters["_cpatient"].Value = cpatient;
cmd.Parameters["o"].Value = olddx;
cmd.Parameters["n"].Value = newdx;
var rowsAffected = cmd.ExecuteNonQuery();
}
PostgreSQL 9.1 存储过程定义为:
FUNCTION g_savedx(_cpatient text, o view_dx, n view_dx) RETURNS void
其中 view_dx 是 PostgreSQL 数据库中的简单表。
我做错了什么?
非常感谢任何帮助。
对于像我这样的新手,DeriveParameters 的上述用法是正确的——来自 Npgsql 的错误消息也是如此。基本问题是 PostgreSQL 存储函数的接口只能使用 NpgsqlDbType 枚举指定的 DbTypes。 NpgsqlDbType(此时)中不存在复合类型 "Object" 或 "View_dx",因此 DerviveParameters 失败。
我的解决方案是将对象序列化为 NpgsqlDbType 允许的一种或多种枚举,并相应地更改存储过程接口。