ns-ext/src/NSExt/Extensions/DbCommandExtensions.cs
2022-11-29 18:00:52 +08:00

29 lines
1.4 KiB
C#

namespace NSExt.Extensions;
public static class DbCommandExtensions
{
/// <summary>
/// 格式化参数拼接成完整的SQL语句
/// </summary>
/// <returns></returns>
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;
}
}