odp.netを使用してOracleでEntityFrameworkを使用しています。パラメータ化された SQL クエリが機能しません。
var orderCode = "XYZ";
var set = ctx.Database.SqlQuery<Order>(
"Select * from dwh.Orders where OrderCode = '{0}'"
, orderCode
);
(また)
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
ただし、値をハードコーディングした場合は機能します。
var set = ctx.Database.SqlQuery<Order>(
"Select * from dwh.Orders where OrderCode = 'XYZ'",
orderCode
);
誰でも理由を知っていますか?そのビューには 150 列あります。問題ありますか?
更新: Oracle パラメーターを使用したクエリは機能します。問題は、:param 変数を一重引用符で囲んでいたことです。
そうは言っても、'{0}' を使用したトップ クエリは機能しません。また、次の linq クエリは機能しません。
var set = ctx.Orders.Where(a => a.OrderCode == orderCode); // Gets zero results.
値をハードコーディングすると、機能し、結果が正しく取得されます。
var set = ctx.Orders.Where(a => a.OrderCode == "XYZ"); // Gets the results correctly.
更新 2: クエリは、Devart の dotconnect ドライバーで動作します。これは odp.net の問題のようです。
誰もが同様の問題を抱えていますか?