Ich benutze EntityFramework mit Oracle mit odp.net. Die parametrisierte SQL-Abfrage funktioniert nicht.Entity Framework mit Oracle mit odp.net nicht Parameter in linq Abfrage
var orderCode = "XYZ";
var set = ctx.Database.SqlQuery<Order>(
"Select * from dwh.Orders where OrderCode = '{0}'"
, orderCode
);
(oder)
var set1 = ctx.Database.SqlQuery<Order>(
"Select * from dwh.Orders where OrderCode = ':param'",
new OracleParameter("param", orderCode)
);
Console.WriteLine(set.Count() + ", " + set1.Count()); //Gives 0, 0
Wenn ich jedoch den Wert harter Code haben, funktioniert es.
var set = ctx.Database.SqlQuery<Order>(
"Select * from dwh.Orders where OrderCode = 'XYZ'",
orderCode
);
Weiß jemand warum? Ich habe 150 Spalten in dieser Ansicht. Ist das ein Problem?
UPDATE: Die Abfrage mit dem Oracle-Parameter funktioniert. Das Problem ist, dass ich einfache Anführungszeichen um die Variable: param hatte.
Die oben genannte Abfrage mit '{0}' funktioniert nicht. Außerdem funktioniert die folgende linq-Abfrage nicht.
Wenn ich den Wert fest codiere, funktioniert es und holt die Ergebnisse korrekt.
var set = ctx.Orders.Where(a => a.OrderCode == "XYZ"); // Gets the results correctly.
UPDATE 2: Die Abfragen arbeiten mit dotConnect Treiber von Devart. Sieht so aus, als wäre das ein Problem mit odp.net.
Hat jemand ähnliche Probleme?
Können Sie erklären "funktioniert nicht" besser? Erhalten Sie eine Ausnahme, ein leeres Ergebnis oder falsche Ergebnisse? –
Funktioniert es, wenn Sie 'a.OrderCode.Equals (orderCode)' –
verwenden. Equals funktioniert auch nicht. – Jonna