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

时间:2016-08-03 16:24:04

标签: postgresql stored-procedures dapper npgsql

来自NuGet,我正在使用

  

... \包\ Npgsql.2.2.5 \ lib中\ net45 \ Npgsql.dll

     

... \包\ Dapper.1.42 \ lib中\ net45 \ Dapper.dll

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

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

我收到运行时错误:

  

未处理的类型&#39; Npgsql.NpgsqlException&#39;发生在   Npgsql.dll

     

其他信息:错误:42883:函数getdxlibrary()没有   存在。

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

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

TIA

1 个答案:

答案 0 :(得分:3)

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

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

PostgreSQL会自动降低所有非引用标识符的大小,所以当你发送GetDxLibrary时,它实际上会看到getdxlibrary。