public static void SetOracleParameters(IDbDataParameter parameter,
                                               OracleDynamicParameters.OracleParameterInfo oracleParameterInfo)
        {
            if (parameter == null)
            {
                throw new ArgumentNullException(nameof(parameter));
            }

            var method = CachedOracleTypes.GetOrAdd(parameter.GetType(), GetOracleProperties);

            if (oracleParameterInfo.DbType.HasValue)
            {
                method.OraDbType.SetValue(parameter, oracleParameterInfo.DbType.Value);
            }

            if (oracleParameterInfo.IsNullable.HasValue)
            {
                method.IsNullable.SetValue(parameter, oracleParameterInfo.IsNullable.Value);
            }

            if (oracleParameterInfo.Scale.HasValue)
            {
                parameter.Scale = oracleParameterInfo.Scale.Value;
            }

            if (oracleParameterInfo.Precision.HasValue)
            {
                parameter.Precision = oracleParameterInfo.Precision.Value;
            }

            parameter.SourceVersion = oracleParameterInfo.SourceVersion;


            if (oracleParameterInfo.SourceColumn != null)
            {
                parameter.SourceColumn = oracleParameterInfo.SourceColumn;
            }

            if (oracleParameterInfo.CollectionType != OracleMappingCollectionType.None)
            {
                method.CollectionType.SetValue(parameter, oracleParameterInfo.CollectionType);
            }

            if (oracleParameterInfo.ArrayBindSize != null)
            {
                method.ArrayBindSize.SetValue(parameter, oracleParameterInfo.ArrayBindSize);
            }
        }
Esempio n. 2
0
        internal static OracleDynamicParameters.OracleParameterInfo GetParameterInfo(IDbDataParameter parameter)
        {
            var method    = GetOracleProperties(parameter.GetType());
            var paramInfo = new OracleDynamicParameters.OracleParameterInfo();

            paramInfo.Name          = parameter.ParameterName;
            paramInfo.SourceVersion = parameter.SourceVersion;
            paramInfo.Precision     = parameter.Precision;
            paramInfo.Size          = parameter.Size;

            paramInfo.DbType             = method.OraDbType.GetValue(parameter);
            paramInfo.ArrayBindSize      = method.ArrayBindSize.GetValue(parameter);
            paramInfo.CollectionType     = method.CollectionType.GetValue(parameter);
            paramInfo.ParameterDirection = parameter.Direction;
            paramInfo.IsNullable         = parameter.IsNullable;
            paramInfo.Scale        = parameter.Scale;
            paramInfo.SourceColumn = parameter.SourceColumn;
            paramInfo.Status       = method.Status.GetValue(parameter);
            paramInfo.Value        = parameter.Value;

            return(paramInfo);
        }