如何在c#代码中记录SQL表值参数值?
我将TVP用于我的一个SQL存储过程。我还记录了SQL参数和SP名称,以便于审计。这就是我在尝试检索TVP并将其记录到日志文件时遇到的问题 这是我的代码:如何在c#代码中记录SQL表值参数值?,c#,sql-server,table-valued-parameters,C#,Sql Server,Table Valued Parameters,我将TVP用于我的一个SQL存储过程。我还记录了SQL参数和SP名称,以便于审计。这就是我在尝试检索TVP并将其记录到日志文件时遇到的问题 这是我的代码: private void LogStoredProc(string procName, SqlParameterCollection sqlparams) { string logMessage = str`enter code here`ing.Format("Invoking stored proc
private void LogStoredProc(string procName, SqlParameterCollection sqlparams)
{
string logMessage = str`enter code here`ing.Format("Invoking stored procedure {0} by {1} and its parameters: /n", procName, Convert.ToString(Session["User"]));
foreach (SqlParameter param in sqlparams)
{
if (param.SqlDbType == SqlDbType.Structured)
{
logMessage += param.Value.AsEnumerable()
.Select(row => row["ID"].ToString())
.Aggregate((s1, s2) => String.Concat(s1, "," + s2));
}
else
{
logMessage += string.Format("{0} : {1} \n", param.ParameterName, param.Value);
}
}
Log.Info(logMessage);
}
“param.Value.AsEnumerable”正在抛出错误。它允许我将param.value仅转换为“string”
请帮忙。您是否总是使用同一来源?例如,始终是一个datatable或始终是一个datareader,或者这是否需要对任何可以是SqlDbType.Structured的对象起作用?请尝试首先将其强制转换为正确的类型((MyTableType)param.Value)。AsEnumerable。这是假设您在其中放入了可以转换为可枚举的内容