c# - SqlConnection द्वारा अंतिम निष्पादित SQL क्वेरी कैसे प्राप्त करें?



logging ado.net (0)

दरअसल, मेरे परिदृश्य में यहाँ उल्लिखित तुलना में थोड़ा अलग है मैंने दूसरे सवाल पूछा है लेकिन जैसा कि मुझे समाधान नहीं मिल रहा है, मैंने इस दृष्टिकोण को बदलने का फैसला किया।

मेरे पास मेरे कोड के लिए एक SqlConnection ऑब्जेक्ट सुलभ है सभी अन्य एडीओ। नेट ऑब्जेक्ट्स जैसे SqlCommand , SqlParameter इत्यादि मेरे लिए उपलब्ध नहीं हैं SqlParameter ये अन्य ऑब्जेक्ट डापर एक्सटेंशन ORM द्वारा खपत होते हैं

मेरा अनुप्रयोग SqlConnection ऑब्जेक्ट और डैपर एक्सटेंशन्स विधि का उपयोग करके 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;
}




sqlconnection