Dapper.net Oracle参数

时间:2014-01-07 01:27:25

标签: oracle dapper

我正在尝试将Dapper.net与Oracle结合使用。

从这个post我知道我们可以使用没有前缀的参数,然后dapper将适用于sql serveroracle

如果没有明确的oracle命名参数前缀:

,我很难让它工作

以下查询

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

引发ORA-00904: "PARAM1": invalid identifier

如果我尝试使用@前缀,则会抛出ORA-00936: missing expression

如果我使用:前缀,它会按预期工作。但我不希望我的查询依赖(尽可能)在Oracle或Sql Server上

我使用的是最新的nuget包版本Dapper.dll 1.12.1.1

我做错了什么或者我误解了这个post

1 个答案:

答案 0 :(得分:6)

是的,你误解了这个帖子。 SQL按原样传递,并且必须包含正确的:param1@param1等。“无前缀根本”正在讨论的代码你看不到 - 具体来说,确保代码确实(通过某种机制):

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

VS

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

VS

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

第一个(无前缀)是正确且首选的选项。

如果您希望代码中的SQL与参数无关,则可以使用此处的信息:Get the parameter prefix in ADO.NET

SQL很少接近,但只需查找参数前缀即可解决所有问题。