【发布时间】:2017-10-26 22:41:24
【问题描述】:
我的代码可以访问一个SqlConnection 对象。我无法访问所有其他 ADO.NET 对象,例如 SqlCommand、SqlParameter 等。这些其他对象由 Dapper Extensions ORM 使用。
我的应用程序使用 SqlConnection 对象和 Dapper Extensions 方法执行 SQL 查询。 SQL 查询由 Dapper Extensions 自动生成;我无法访问生成的查询。我想记录这个 SQL 查询。
我已经有了我的日志记录模块,我唯一需要的是连接对象执行的最后一个 SQL 查询。
如何获取SqlConnection最后执行的SQL查询?
由于SqlCommand 不可访问,因此无法进行以下操作。
如果我得到底层SqlCommand,我可以使用下面的代码从中构建查询;不幸的是,我无法访问它。
public string GetCommandLogString(IDbCommand command)
{
string outputText;
if(command.Parameters.Count == 0)
{
outputText = command.CommandText;
}
else
{
StringBuilder output = new StringBuilder();
output.Append(command.CommandText);
output.Append("; ");
IDataParameter objIDataParameter;
int parameterCount = command.Parameters.Count;
for(int i = 0; i < parameterCount; i++)
{
objIDataParameter = (IDataParameter)command.Parameters[i];
output.Append(string.Format("{0} = '{1}'", objIDataParameter.ParameterName, objIDataParameter.Value));
if(i + 1 < parameterCount)
{
output.Append(", ");
}
}
outputText = output.ToString();
}
return outputText;
}
【问题讨论】:
标签: c# logging ado.net sqlconnection