2014-01-07 6 views
5

Ich versuche, Dapper.net mit Oracle zu verwenden.Dapper.net Oracle Parameter

Von diesem post i verstanden, dass wir Parameter ohne Präfixe und adrett würde verwenden könnten dann für beide arbeiten sql server und oracle

Ich bin eine harte Zeit, so dass es ohne ausdrückliche Orakel arbeiten benannte Parameter : Präfix

Die folgende Abfrage

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

wirft ORA-00904: "PARAM1": invalid identifier

Wenn ich mit dem @ Präfix versuchen wirft es ORA-00936: missing expression

Wenn ich das : Präfix verwenden Sie es wie erwartet funktioniert. Aber ich möchte nicht, dass meine Abfragen abhängig (so weit wie möglich) auf Oracle oder Sql Server.

Ich verwende die neueste nuget Paketversion Dapper.dll 1.12.1.1

Was mache ich falsch oder habe falsch verstehen ich dieses post?

Antwort

5

Ja, Sie haben den Beitrag missverstanden. Die SQL wird unverändert weitergegeben und muss die korrekten :param1 oder @param1 etc. enthalten. Die "keine Vorwahl an allen" spricht über den Code Sie nicht sehen - insbesondere, um sicherzustellen, dass der Code tut (über einen Mechanismus):

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

vs

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

vs

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

Der erste (kein Präfix) ist die richtige und bevorzugte Option.

Wenn Sie die SQL in Ihrem Code wollen Parameter Agnostiker sein, können Sie die Informationen von hier verwenden: Get the parameter prefix in ADO.NET

Die SQL ist selten nahe genug jedoch, dass nur die Parameter Präfix aufzublicken alle Probleme beheben .

+0

Vielen Dank für die Einsicht. –