我正在尝试使用Dapper调用声明为以下内容的PostrSQL函数:
创建或替换函数public. test(参数1整数,参数2字符变化,参数3字符变化)
我正在使用Dapper-Async像这样调用这个函数:
cnx. QueryAsync($@"SELECT*从public.test(@Param1,@Param2,@Param3);",new{Param1=12,Param2=mylong string1,Param3=mylong string2});
此调用失败并出现以下错误:
npgsql. PostgresException(0x80004005):42883:函数public.test(整数、文本、文本)不存在
如您所见,DbString匹配文本参数类型。我如何匹配字符变化?
问题可能是您的函数定义为参数类型字符变化
,但错误显示您正在发送文本
。虽然这可能有点令人困惑,但这是两种不同的后端类型。
默认情况下,Npgsql映射。NET字符串到text
,而不是字符变化
。您可以更改函数以接受text
(或添加重载),或使用NpgsqlDbType
指定字符变化(但不确定如何使用Dapper执行此操作)。