我试图使用Dapper来调用声明如下的PostreSQL函数:
创建或替换函数public.test(param1整数,param2字符变化,param3字符变化)
我使用 Dapper-Async 来调用此函数:
cnx.QueryAsync($ @" SELECT * FROM public.test(@ Param1,@ Param2,@ Param3);", new {Param1 = 12,Param2 = mylongstring1,Param3 = mylongstring2});
此调用失败,并显示以下错误:
Npgsql.PostgresException(0x80004005):42883:函数public.test(整数,文本,文本)不存在
如您所见, DbString 与 text 参数类型相匹配。 如何匹配字符变化?
答案 0 :(得分:0)
问题可能是您的函数是使用参数类型character varying
定义的,但错误显示您正在发送text
。虽然这可能有些令人困惑,但这些是两种不同的后端类型。
默认情况下,Npgsql将.NET字符串映射到text
,而不映射到character varying
。您可以将功能更改为接受text
(或添加重载),或使用NpgsqlDbType
指定character varying
(不知道如何使用Dapper执行此操作)。