我需要制作一个通用的记录器来记录某些insert/update语句,这样我的测试人员就可以验证插入的数据是否正确。
我的第一个想法是,我只需要使用一个接受DynamicParameters的函数,然后遍历DynamicParameters,生成一个字符串来列出参数的名称和值,让测试人员更容易阅读它们。
不幸的是,Dapper.DynamicParameters没有包含"GetEnumerator“的公共定义
以下是我希望做的基本示例:
string myFormattedListofParameters = "";
foreach (var p in myDynamicParameters)
{
myFormattedListofParameters += p.Name + "=" + p.Value.ToString();
}发布于 2012-05-09 13:46:30
尝试:
var sb = new StringBuilder();
foreach (var name in p.ParameterNames)
{
var pValue = p.Get<dynamic>(name);
sb.AppendFormat("{0}={1}\n", name, pValue.ToString());
}发布于 2015-12-03 08:37:46
string ParametersToString(DynamicParameters parameters)
{
var result = new StringBuilder();
if (parameters != null)
{
var firstParam = true;
var parametersLookup = (SqlMapper.IParameterLookup)parameters;
foreach (var paramName in parameters.ParameterNames)
{
if (!firstParam)
{
result.Append(", ");
}
firstParam = false;
result.Append('@');
result.Append(paramName);
result.Append(" = ");
try
{
var value = parametersLookup[paramName];// parameters.Get<dynamic>(paramName);
result.Append((value != null) ? value.ToString() : "{null}");
}
catch
{
result.Append("unknown");
}
}
}
return result.ToString();
}发布于 2020-10-07 07:07:15
Linq中有一行:
string.Join(", ", from pn in sprocParams.ParameterNames select string.Format("@{0}={1}", pn, (sprocParams as SqlMapper.IParameterLookup)[pn]))我正在使用它在log4net上进行记录:
Log.InfoFormat("Exec {0} {1}", storedProc, string.Join(", ", from pn in sprocParams.ParameterNames select string.Format("@{0}={1}", pn, (sprocParams as SqlMapper.IParameterLookup)[pn])));https://stackoverflow.com/questions/10501319
复制相似问题