72 lines
2.6 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|