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

对于ODP.NET,有没有办法强制OracleCommand.BindByName为true?

发布时间:2020-12-12 15:14:26 所属栏目:百科 来源:网络整理
导读:由于 System.Data.OracleClient库已经是 deprecated,我们正在迁移我们的代码库以使用 Oracle Data Provider for .NET(ODP.NET).我们遇到的一个问题是System.Data.OracleClient使用参数名绑定而不是按位置绑定,并且所有代码都直接访问 System.Data.OracleClie
由于 System.Data.OracleClient库已经是 deprecated,我们正在迁移我们的代码库以使用 Oracle Data Provider for .NET(ODP.NET).我们遇到的一个问题是System.Data.OracleClient使用参数名绑定而不是按位置绑定,并且所有代码都直接访问 System.Data.OracleClient.OracleCommand而不是使用中间数据层.

由于存在相当多的代码,是否有一种简单的方法可以强制ODP.NET OracleCommand.BindByName默认为true,或者我们必须在每次使用它时设置值?如果失败了,是否有一种简单的方法可以在Visual Studio 2008中插入这行代码?

我知道这个帖子已经过时了,但我今天遇到了同样的问题,并且认为我会分享我的解决方案以防其他人遇到这个问题.由于OracleCommand是密封的(很糟糕),我创建了一个封装OracleCommand的新类,在实例化时将BindByName设置为true.以下是实施的一部分:
public class DatabaseCommand
{
    private OracleCommand _command = null;

    public DatabaseCommand(string sql,OracleConnection connection)
    {
        _command = new OracleCommand(sql,connection)
        {
            BindByName = true
        };
    }

    public int ExecuteNonQuery()
    {
        return _command.ExecuteNonQuery();
    }

    // Rest of impl removed for brevity
}

然后我需要做的就是清理命令,然后搜索OracleCommand并用DatabaseCommand替换并测试.

(编辑:李大同)

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

    推荐文章
      热点阅读