2013-10-10 6 views
7

मार्गदर्शिका here का उपयोग करके, मैं अपने एमवीसी वेब एप्लिकेशन द्वारा उत्पन्न SQL को लॉग करने का प्रयास कर रहा हूं।एमवीसी वेब ऐप में संदर्भ.डेटाबेस.लोग का उपयोग

context.Database.Log = Console.Write; 

कौन सा स्पष्ट रूप से एक वेब अनुप्रयोग के साथ काम नहीं करता है:

गाइड

लाइन का उपयोग करता है।

DbContext.Database.Log संपत्ति किसी भी विधि है कि एक स्ट्रिंग लेता है के लिए एक प्रतिनिधि के लिए सेट किया जा सकता है: गाइड के लिए लॉग संपत्ति का वर्णन किया।

और यह मुझे समझ में नहीं आता है, प्रतिनिधियों ने मुझे भ्रमित कर दिया है। मैं इस ईएफ 6 सुविधा का उपयोग कैसे कर सकता हूं?

उत्तर

20

एक प्रतिनिधि का उपयोग करके आप स्ट्रिंग लेने वाले किसी भी कार्य को लिखने की अनुमति देते हैं। एक फाइल करने के लिए एक बहुत ही सरल प्रवेश के रूप में, आप निम्न कार्य कर सकता है:

context.Database.Log = message => Trace.WriteLine(message); 

आप और अधिक उदाहरण देख सकते हैं:

context.Database.Log = message => File.AppendText("C:\\mylog.txt").WriteLine(message); 

एक वेब वातावरण में, आप इस जानकारी को लॉग इन करने ट्रेस का उपयोग करना चाहें MSDN page on Anonymous Functions पर प्रतिनिधियों का उपयोग करने के लिए।

+1

Debug.WriteLine (संदेश) भी काम करता है –

4

एक फाइल करने के लिए अपने लॉग लिखने के लिए, इस प्रयास करें:

using (var context = new MyDbContext()) 
{ 
    var logFile = new StreamWriter("C:\\temp\\log.txt"); 
    context.Database.Log = logFile.Write; 

    // Execute your queries here 
    // .... 

    logFile.Close(); 
} 
संबंधित मुद्दे