Is there a way to force OracleCommand.BindByName to be true by default for ODP.NET?

后端 未结 7 1624
粉色の甜心
粉色の甜心 2020-12-19 06:25

Since the System.Data.OracleClient library has been deprecated, we are in the process of migrating our code base to use Oracle Data Provider for .NET (ODP.NET) instead. One

7条回答
  •  谎友^
    谎友^ (楼主)
    2020-12-19 06:44

    I know this thread is old, but I had the same problem today and thought I would share my solution in case someone else had this problem. Since OracleCommand is sealed (which sucks), I created a new class that encapsulates the OracleCommand, setting the BindByName to true on instantiation. Here's part of the implementation:

    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
    }
    

    Then all I had to do to cleanup the commands was do a search for OracleCommand and replace with DatabaseCommand and test.

提交回复
热议问题