TG.WXCRM.V4/NetCore.BLL/crm/OracleDynamicParameters.cs

72 lines
2.6 KiB
C#

using Dapper;
using Oracle.ManagedDataAccess.Client;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
namespace NetCore.BLL
{
public class OracleDynamicParameters
{
private readonly DynamicParameters _dynamicParameters = new DynamicParameters();
private readonly List<OracleParameter> _oracleParameters = new List<OracleParameter>();
public void Add(string name, object value = null, DbType dbType = DbType.AnsiString, ParameterDirection? direction = null, int? size = null)
{
_dynamicParameters.Add(name, value, dbType, direction);
}
public void Add(string name, OracleDbType oracleDbType, object value)
{
var oracleParameter = new OracleParameter(name, oracleDbType) { Value = value };
_oracleParameters.Add(oracleParameter);
}
public void Add(string name, OracleDbType oracleDbType, ParameterDirection direction)
{
var oracleParameter = new OracleParameter(name, oracleDbType) { Direction = direction };
_oracleParameters.Add(oracleParameter);
}
public void Add(string name, OracleDbType oracleDbType, int size, ParameterDirection direction)
{
var oracleParameter = new OracleParameter(name, oracleDbType, size) { Direction = direction };
_oracleParameters.Add(oracleParameter);
}
public void AddParameters(IDbCommand command, SqlMapper.Identity identity)
{
((SqlMapper.IDynamicParameters)_dynamicParameters).AddParameters(command, identity);
var oracleCommand = command as OracleCommand;
if (oracleCommand != null)
{
oracleCommand.Parameters.AddRange(_oracleParameters.ToArray());
}
}
public T Get<T>(string parameterName)
{
var parameter = _oracleParameters.SingleOrDefault(t => t.ParameterName == parameterName);
if (parameter != null)
return (T)Convert.ChangeType(parameter.Value, typeof(T));
return default(T);
}
public OracleParameter GetOne(string parameterName)
{
var parameter = _oracleParameters.SingleOrDefault(t => t.ParameterName == parameterName);
return parameter;
}
public T Get<T>(int index)
{
var parameter = _oracleParameters[index];
if (parameter != null)
return (T)Convert.ChangeType(parameter.Value, typeof(T));
return default(T);
}
}
}