ODP.NET OracleException.ErrorCode 和 OracleException.Number 的区别?

ODP.NET difference between OracleException.ErrorCode and OracleException.Number?

要将旧的 VB.NET 应用程序从 depricated System.Data.OracleClient Microsoft 提供商转换为 ODP.NET Oracle.ManagedDataAccess.dll(版本 4.122.1.0),我想知道是否有两者之间的差异:

Oracle.ManagedDataAccess.Client.OracleException.ErrorCode "Gets the HRESULT of the error"

对比

Oracle.ManagedDataAccess.Client.OracleException.Number "Specifies the Oracle error number"

旧代码引用了 System.OracleClient.OracleException.Code,当错误为 "ORA-06550" 时结果为 6550(注意:结果不是负值,例如 -6550)

我通过抛出一个唯一约束来测试这个"ORA-00001: unique constraint violated"

结果是:

ex.ErrorCode = -2147467259

ex.Number = 1

因此,我会将对 System.OracleClient.OracleException.Code 的引用替换为 Oracle.ManagedDataAccess.Client.OracleException.Number