/// <summary> /// 配置数据库命令参数 /// </summary> /// <param name="name">参数名</param> /// <param name="value">参数值</param> /// <param name="dbParameterAttribute">参数特性</param> /// <param name="dbParameter">数据库命令参数</param> /// <returns>DbParameter</returns> internal static DbParameter ConfigureDbParameter(string name, object value, DbParameterAttribute dbParameterAttribute, DbParameter dbParameter) { // 设置参数方向 dbParameter.ParameterName = name; dbParameter.Value = value; dbParameter.Direction = dbParameterAttribute.Direction; // 设置参数数据库类型 if (dbParameterAttribute.DbType != null) { var type = dbParameterAttribute.DbType.GetType(); if (type.IsEnum) { // 处理通用 DbType 类型 if (typeof(DbType).IsAssignableFrom(type)) { dbParameter.DbType = (DbType)dbParameterAttribute.DbType; } // 解决 Oracle 数据库游标类型参数 if (type.FullName.Equals("Oracle.ManagedDataAccess.Client.OracleDbType", StringComparison.OrdinalIgnoreCase)) { dbParameter.GetType().GetProperty("OracleDbType")?.SetValue(dbParameter, dbParameterAttribute.DbType); } } } // 设置大小,解决NVarchar,Varchar 问题 if (dbParameterAttribute.Size > 0) { dbParameter.Size = dbParameterAttribute.Size; } return(dbParameter); }
/// <summary> /// 配置数据库命令参数 /// </summary> /// <param name="name">参数名</param> /// <param name="value">参数值</param> /// <param name="dbParameterAttribute">参数特性</param> /// <param name="dbParameter">数据库命令参数</param> /// <returns>DbParameter</returns> internal static DbParameter ConfigureDbParameter(string name, object value, DbParameterAttribute dbParameterAttribute, DbParameter dbParameter) { // 设置参数方向 dbParameter.ParameterName = name; dbParameter.Value = value; dbParameter.Direction = dbParameterAttribute.Direction; // 设置参数数据库类型 if (dbParameterAttribute.DbType != null) { var type = dbParameterAttribute.DbType.GetType(); if (type.IsEnum && typeof(DbType).IsAssignableFrom(type)) { dbParameter.DbType = (DbType)dbParameterAttribute.DbType; } } // 设置大小,解决NVarchar,Varchar 问题 if (dbParameterAttribute.Size > 0) { dbParameter.Size = dbParameterAttribute.Size; } return(dbParameter); }