namespace NSExt;
public static class DbCommandExtensions
{
///
/// 格式化参数拼接成完整的SQL语句
///
///
public static string ParameterFormat(this DbCommand me)
{
//var aa = pars.ToDictionary(it => it.ParameterName, it => it.Value);
var sql = me.CommandText;
//应逆向替换,否则由于 多个表的过滤器问题导致替换不完整 如 @TenantId1 @TenantId10
for (var i = me.Parameters.Count - 1; i >= 0; i--)
sql = me.Parameters[i].DbType switch {
DbType.String or DbType.DateTime or DbType.Date or DbType.Time or DbType.DateTime2
or DbType.DateTimeOffset or DbType.Guid or DbType.VarNumeric or DbType.AnsiStringFixedLength
or DbType.AnsiString
or DbType.StringFixedLength => sql.Replace(me.Parameters[i].ParameterName,
"'" + me.Parameters[i].Value + "'"),
DbType.Boolean => sql.Replace(me.Parameters[i].ParameterName,
Convert.ToBoolean(me.Parameters[i].Value) ? "1" : "0"),
_ => sql.Replace(me.Parameters[i].ParameterName, me.Parameters[i].Value?.ToString())
};
return sql;
}
}