Dapper Npgsql DbString字符vayring参数

时间:2017-01-17 12:29:53

标签: dapper npgsql

我试图使用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 参数类型相匹配。 如何匹配字符变化

1 个答案:

答案 0 :(得分:0)

问题可能是您的函数是使用参数类型character varying定义的,但错误显示您正在发送text。虽然这可能有些令人困惑,但这些是两种不同的后端类型。

默认情况下,Npgsql将.NET字符串映射到text,而不映射到character varying。您可以将功能更改为接受text(或添加重载),或使用NpgsqlDbType指定character varying(不知道如何使用Dapper执行此操作)。