werte - t sql c#



Wie bekomme ich die letzte SQL-Abfrage von SqlConnection? (0)

Eigentlich ist mein Szenario etwas anders als hier erwähnt. Ich habe andere Frage gestellt. Aber da ich dort keine Lösung finde, habe ich beschlossen, den Ansatz zu ändern.

Ich habe ein SqlConnection Objekt, auf das mein Code SqlConnection kann. Alle anderen ADO.NET-Objekte wie SqlCommand , SqlParameter usw. sind für mich nicht zugänglich. Diese anderen Objekte werden von Dapper Extensions ORM verbraucht.

Meine Anwendung führt SQL-Abfragen mit dem SqlConnection Objekt und der Dapper-Extensions-Methode aus. SQL-Abfrage wird automatisch von Dapper Extensions generiert; generierte Abfrage ist für mich nicht zugänglich. Ich möchte diese SQL-Abfrage protokollieren.

Ich habe bereits mein Protokollierungsmodul an Ort und Stelle und das einzige, was ich brauche, ist die letzte SQL-Abfrage, die vom Verbindungsobjekt ausgeführt wird.

Wie bekomme ich die letzte SQL-Abfrage von SqlConnection ?

Folgendes funktioniert nicht, da auf SqlCommand nicht SqlCommand .

Wenn ich SqlCommand zugrunde SqlCommand , kann ich die Abfrage mit dem folgenden Code erstellen; Leider ist es mir nicht zugänglich.

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;
}




sqlconnection