dapper 中匿名参数对C#中的字符串类型 默认是对应数据库nvarchar 进行比较,对于数据库非N字符串类型会严重影响性能。
程序中尽量使用动态参数,指定类型查询。
传参示例:
一、sqlserver 数据库:
1.char
DynamicParameters parametersTemp = new DynamicParameters();
parametersTemp.Add("v_orderno", productionNo,DbType.AnsiStringFixedLength);
2.nchar
DynamicParameters parametersTemp = new DynamicParameters();
parametersTemp.Add("v_orderno", productionNo,DbType.StringFixedLength);
3.varchar
DynamicParameters parametersTemp = new DynamicParameters();
parametersTemp.Add("v_orderno", productionNo, DbType.AnsiString);
4.nvarchar
DynamicParameters parametersTemp = new DynamicParameters();
parametersTemp.Add("v_orderno", productionNo, DbType.String);
二、oracle数据库:
1.char()
DynamicParameters paramet1 = new DynamicParameters();
paramet1.Add("WorkFlowId", mlotNo, DbType.AnsiStringFixedLength);
指定长度char(12)时可参考:
paramet1.Add("WorkFlowId", mlotNo, DbType.AnsiStringFixedLength, ParameterDirection.Input, 12);
2.nchar
DynamicParameters parametersTemp = new DynamicParameters();
parametersTemp.Add("v_orderno", productionNo,DbType.StringFixedLength);
3.varchar2
DynamicParameters parametersTemp = new DynamicParameters();
parametersTemp.Add("v_orderno", productionNo, DbType.AnsiString);
4.nvarchar2
DynamicParameters parametersTemp = new DynamicParameters();
parametersTemp.Add("v_orderno", productionNo, DbType.String);
如需要其它类型,可参考如下: