Dapper.net Oracle parameter

余生长醉 提交于 2019-12-01 01:49:45

问题


I am trying to use Dapper.net with Oracle.

From this post i understood that we could use parameters with no prefixes and dapper would then work for both sql serverand oracle

I'm having a hard time making it to work without the explicit oracle named parameters prefix :

The following query

sqlConnection.Query("Select * FROM document WHERE id = param1", new { param1 = 963 });

Throws ORA-00904: "PARAM1": invalid identifier

If i try with the @ prefix it throws ORA-00936: missing expression

If i use the : prefix it works as expected. But i do not want my queries to be dependent (as far as possible) upon Oracle or Sql Server.

I am using the latest nuget package version Dapper.dll 1.12.1.1

What am I doing wrong or did i misunderstand this post?


回答1:


Yes, you misunderstood the post. The SQL is passed through as-is, and must contain the correct :param1 or @param1 etc. The "no prefix at all" is talking about the code that you don't see - specifically, making sure that the code does (via some mechanism):

cmd.Parameters.Add("param1", 963);

vs

cmd.Parameters.Add("@param1", 963);

vs

cmd.Parameters.Add(":param1", 963);

The first (no prefix) is the correct and preferred option.

If you want the SQL in your code to be parameter agnostic, you could use the information from here: Get the parameter prefix in ADO.NET

The SQL is rarely close enough, however, that just looking up the parameter prefix will fix all problems.



来源:https://stackoverflow.com/questions/20962405/dapper-net-oracle-parameter

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!