.net oracle 参数化,.net – 使参数化查询与SQL Server和Oracle一起使用

我们的大型应用程序(VB.Net,Framework 3.5)从一开始就或多或少地开发使用SQL Server和SQL Server.当然有一天有人把它卖给了客户,并承诺我们可以让它在Oracle(10g及以上版本)上工作,现在它确实可以,但我们有相当大的性能问题.

这源于几乎所有SQL(包含在应用程序代码中)都在表单的参数化查询中

SELECT Col1, Col2, Col3 FROM TableName WHERE IdCol = @EntityId

然后将其与参数名称数组,类型数组和值数组一起传递到数据访问层,然后使用Enterprise Library 5执行以处理实际连接等.

当这个项目开始时,有人意识到Oracle需要表单中的参数

:EntityId

并且决定不是试图找到并重新编写SQL的每一部分(这个应用程序本身只有大约一百万个LOC,套件中还有其他部分),他们会添加一个在执行查询之前调用的函数来替换@ with:在查询和参数名称数组中.它还删除了’WITH NOLOCK’,方括号,并替换了连接字符和SQL Server使用的其他此类人工制品,但Oracle不使用.当然,问题在于字符串搜索和替换是昂贵的,并且在应用程序中的一个简单操作中,有两个以上的简单查询是按顺序执行的.对SQL Server而言,这根本不需要时间,但对于Oracle平台,它需要20-30秒.

理想情况下,我想重新编写大量代码来清除糟糕/低效的代码,设计和修复狡猾的架构,并用nHibernate或Entity Framework替换.但由于商业压力和任务的规模,这种情况不会很快发生.

鉴于我不太可能被允许进行如此巨大的根本性改变,如切换到ORM或重新构建大量代码,我的问题很简单:

有没有办法让SQL Server或Oracle理解另一个参数标识符,或者以一般方式编写参数化查询的一些明智,简单的方法,而不需要大量的字符串替换或IF … Else语句依赖于目标平台?我意识到我可能仍然需要编辑应用程序中的几乎每个SQL语句,但如果是这样的话那么就是这样,我只需将这个想法卖给我的老板.

干杯

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值