2014-01-07 62 views
5

我正在嘗試將Dapper.net與Oracle結合使用。Dapper.net Oracle參數

從這個post我瞭解,我們可以使用參數不帶前綴,然後將短小精悍兩個sql serveroracle

我有一個很難使它在沒有明確的預言命名參數前綴:攜手

以下查詢

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

拋出ORA-00904: "PARAM1": invalid identifier

如果我用@前綴嘗試拋出ORA-00936: missing expression

如果我用:前綴它按預期工作。但我不希望我的查詢依賴於(儘可能)在Oracle或SQL Server上。

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

我在做什麼錯還是我誤解這post

回答

5

是的,你誤解了帖子。 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很少足夠接近,然而,這只是仰視參數前綴將解決所有問題。

+0

非常感謝您的洞察力。 –