Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c#代码中记录SQL表值参数值?_C#_Sql Server_Table Valued Parameters - Fatal编程技术网

如何在c#代码中记录SQL表值参数值?

如何在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

我将TVP用于我的一个SQL存储过程。我还记录了SQL参数和SP名称,以便于审计。这就是我在尝试检索TVP并将其记录到日志文件时遇到的问题

这是我的代码:

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。这是假设您在其中放入了可以转换为可枚举的内容