TG.WXCRM.V4/WX.CRM.DataSynApi/Dao/OracleDynamicParameters.cs

55 lines
1.9 KiB
C#

using Dapper;
using Oracle.ManagedDataAccess.Client;
using System.Collections.Generic;
using System.Data;
using System.Linq;
namespace WX.CRM.DataSynApi.Dao
{
public class OracleDynamicParameters : SqlMapper.IDynamicParameters, SqlMapper.IParameterLookup
{
private readonly DynamicParameters _dynamicParameters = new DynamicParameters();
private readonly List<OracleParameter> _oracleParameters = new List<OracleParameter>();
public object this[string name]
{
get
{
var para = _oracleParameters.SingleOrDefault(t => t.ParameterName == name);
if (para != null)
return para.Value;
return null;
}
}
public void Add(string name, object value = null, DbType dbType = DbType.AnsiString, ParameterDirection? direction = null, int? size = null)
{
_dynamicParameters.Add(name, value, dbType, direction, size);
}
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());
}
}
}
}