加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

使用odp.net的Oracle实体框架不在linq查询中获取参数

发布时间:2021-05-30 19:18:23 所属栏目:站长百科 来源:网络整理
导读:我行使odp.net在Oracle中行使EntityFramework.参数化的sql查询不起浸染. var orderCode = "XYZ";var set = ctx.Database.SqlQueryOrder( "Select * from dwh.Orders where OrderCode = '{0}'",orderCode); (要么) var set1 = ctx.Database.SqlQueryOrder( "S

我行使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的一个题目.

有人有相同的题目吗?

不确定是否截断了您的示例,但假如您行使多个参数,则也许是题目地址:

Parameterized query in Oracle trouble

Although I can’t see anything wrong with your example,I wonder if you’re being hit by the old BindByName problem. By default,ODP.NET binds parameters to the query in the order in which they are added to the collection,rather than based on their name as you’d like. Try setting BindByName to true on your OracleCommand object and see if that fixes the problem.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读