using Dapper; using Oracle.ManagedDataAccess.Client; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Threading.Tasks; namespace SuperAdmin.Oracle { public class OracleDynamicParameters : SqlMapper.IDynamicParameters { private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(OracleDynamicParameters)); private readonly DynamicParameters dynamicParameters = new DynamicParameters(); private readonly List oracleParameters = new List(); public void Add(string name, OracleDbType oracleDbType, ParameterDirection direction, object value = null, int? size = null) { try { OracleParameter oracleParameter; if (size.HasValue) { oracleParameter = new OracleParameter(name, oracleDbType, size.Value, value, direction); } else { oracleParameter = new OracleParameter(name, oracleDbType, value, direction); } oracleParameters.Add(oracleParameter); } catch (Exception ex) { log.Error(ex); throw ex; } } public void Add(string name, OracleDbType oracleDbType, ParameterDirection direction) { try { var oracleParameter = new OracleParameter(name, oracleDbType, direction); oracleParameters.Add(oracleParameter); } catch (Exception ex) { log.Error(ex); throw ex; } } public void AddParameters(IDbCommand command, SqlMapper.Identity identity) { try { ((SqlMapper.IDynamicParameters)dynamicParameters).AddParameters(command, identity); var oracleCommand = command as OracleCommand; if (oracleCommand != null) { oracleCommand.Parameters.AddRange(oracleParameters.ToArray()); } } catch (Exception ex) { log.Error(ex); throw ex; } } } }