Tôi đang sử dụng EntityFramework với Oracle bằng cách sử dụng odp.net. Truy vấn sql được tham số hóa không hoạt động.Khuôn khổ thực thể với Oracle bằng cách sử dụng odp.net không tham số trong truy vấn LINQ
var orderCode = "XYZ";
var set = ctx.Database.SqlQuery<Order>(
"Select * from dwh.Orders where OrderCode = '{0}'"
, orderCode
);
(hoặc)
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
Tuy nhiên, nếu tôi có mã cứng giá trị, nó hoạt động.
var set = ctx.Database.SqlQuery<Order>(
"Select * from dwh.Orders where OrderCode = 'XYZ'",
orderCode
);
Có ai biết tại sao không? Tôi có 150 cột trong chế độ xem đó. Đó có phải là vấn đề không?
CẬP NHẬT: Truy vấn có tham số Oracle hoạt động. Vấn đề là tôi đã có dấu nháy đơn xung quanh biến: param.
Điều đó đang được nói, truy vấn hàng đầu với '{0}' không hoạt động. Ngoài ra, truy vấn LINQ sau đây không hoạt động.
var set = ctx.Orders.Where(a => a.OrderCode == orderCode); // Gets zero results.
Khi tôi mã hóa giá trị, nó hoạt động và tìm nạp kết quả chính xác.
var set = ctx.Orders.Where(a => a.OrderCode == "XYZ"); // Gets the results correctly.
UPDATE 2: Các truy vấn làm việc với tài xế dotconnect từ Devart. Có vẻ như đây là vấn đề với odp.net.
Bất kỳ ai cũng có vấn đề tương tự?
Bạn có thể giải thích "không hoạt động" tốt hơn không? Bạn có nhận được ngoại lệ, kết quả trống hoặc kết quả sai không? –
Tính năng này có hoạt động nếu bạn sử dụng 'a.OrderCode.Equals (mã đơn hàng)' –
.Equals không hoạt động. – Jonna