如何从 Dapper(使用 Npgsql)调用具有混合大小写名称的存储过程?

How to call a stored procedure with a mixed-case name from Dapper (with Npgsql)?

来自 NuGet,我正在使用

...\packages\Npgsql.2.2.5\lib\net45\Npgsql.dll

...\packages\Dapper.1.42\lib\net45\Dapper.dll

在 PostgreSQL 中调用存储过程时,我需要将过程名称的大小写保留为

var x = cnn.Query<icd9>("GetDxLibrary", commandType: CommandType.StoredProcedure);

我收到运行时错误:

An unhandled exception of type 'Npgsql.NpgsqlException' occurred in Npgsql.dll

Additional information: ERROR: 42883: function getdxlibrary() does not exist.

如果PostgreSQL中的函数重命名为getdxlibrary(),一切顺利。

如何在 Dapper 中调用具有混合大小写名称的过程?

TIA

只需在您的函数名称周围添加引号:

var x = cnn.Query<icd9>("\"GetDxLibrary\"", commandType: CommandType.StoredProcedure);

PostgreSQL 自动将所有非引号标识符小写,因此当您向它发送 GetDxLibrary 时,它实际上看到的是 getdxlibrary。