55 lines
1.9 KiB
C#
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());
|
|
}
|
|
}
|
|
}
|
|
} |