Dapper对SQL Server支持很好,但对于Oracle有些用法不一样,需要自己进行特殊处理。
1、首先要自定义一个Oracle参数类
1 public class OracleDynamicParameters : SqlMapper.IDynamicParameters 2 { 3 private readonly DynamicParameters dynamicParameters = new DynamicParameters(); 4 5 private readonly List<OracleParameter> oracleParameters = new List<OracleParameter>(); 6 7 public void Add(string name, OracleDbType oracleDbType, ParameterDirection direction, object value = null, int? size = null) 8 { 9 OracleParameter oracleParameter; 10 if (size.HasValue) 11 { 12 oracleParameter = new OracleParameter(name, oracleDbType, size.Value, value, direction); 13 } 14 else 15 { 16 oracleParameter = new OracleParameter(name, oracleDbType, value, direction); 17 } 18 19 oracleParameters.Add(oracleParameter); 20 } 21 22 public void Add(string name, OracleDbType oracleDbType, ParameterDirection direction) 23 { 24 var oracleParameter = new OracleParameter(name, oracleDbType, direction); 25 oracleParameters.Add(oracleParameter); 26 } 27 28 public void AddParameters(IDbCommand command, SqlMapper.Identity identity) 29 { 30 ((SqlMapper.IDynamicParameters)dynamicParameters).AddParameters(command, identity); 31 32 var oracleCommand = command as OracleCommand; 33 34 if (oracleCommand != null) 35 { 36 oracleCommand.Parameters.AddRange(oracleParameters.ToArray()); 37 } 38 } 39 }