2012-07-17 11 views
10

Service Stack Ormlite documentation के अनुसार। मुझे डीबग मोड में एसक्यूएल क्वेरी उत्पन्न करनी चाहिए। लेकिन, मैं उन प्रश्नों को देखने में सक्षम नहीं हूं। सरल कोडसर्विसस्टैक OrmLite एसक्यूएल क्वेरी लॉगिंग

private static readonly string DataDirLoc = 
     Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + 
     "\\TargetIntegration\\Test\\Debug\\"; 



    private readonly string dbFileName = DataDirLoc + 
               "Test.db3"; 

    [Test] 
    public void Can_Generate_log() { 
     //var writer = new TextWriterTraceListener(System.Console.Out); 
     //Debug.Listeners.Add(writer); 
     Debug.Write("this is a try"); 
     var dbFact = new OrmLiteConnectionFactory("Data Source={0};Version=3;".FormatParams(dbFileName), true, 
                SqliteOrmLiteDialectProvider.Instance); 
      IDbConnection dbConnection = dbFact.OpenDbConnection(); 
     var dbCommand = dbConnection.CreateCommand(); 
     dbCommand.CreateTable<Contact>(); 
    } 

उत्तर

15

आपको SQL आउटपुट देखने के लिए OrmLite के डीबग बिल्ड की आवश्यकता होगी।

Console.WriteLine(dbCmd.GetLastSql()); 

आप किसी कनेक्शन पर फिल्टर, जो आप के साथ कर सकते स्थापना करके डाटाबेस कनेक्शन प्रोफ़ाइल कर सकते हैं:: आप पिछले एसक्यूएल देख सकते हैं अन्य तरीकों के एक जोड़े हैं

var dbFact = new OrmLiteConnectionFactory(
    "Data Source={0};Version=3;".Fmt(dbFileName), true, 
    SqliteOrmLiteDialectProvider.Instance) { 
    ConnectionFilter = x => new ProfiledDbConnection(x, Profiler.Current) 
}; 

कौन सा है, तो आपने इसे ServiceStack में चलाया है, जो आपको सभी SQL कथनों के प्रोफाइल टाइम आउटपुट देखने देगा। क्या इस तरह दिखता है का एक उदाहरण यहां उपलब्ध है:

https://gist.github.com/1787443

+0

धन्यवाद Demis। लेकिन, मैं एक विंडोज़ अनुप्रयोग में ORMlite का उपयोग कर रहा हूँ। मुझे नहीं लगता कि मैं एमवीसी मिनी प्रोफाइलर का उपयोग कर सकता हूं। शायद मैं गलत हूँ। कृपया गाइड करें। – Mohit

+0

और डिफ़ॉल्ट रूप से dbCommand पर "GetLastSql()" कोई एक्सटेंशन विधि नहीं है, मैं "कमांडटेक्स्ट" का उपयोग कर सकता हूं। लेकिन यह केवल अंतिम निष्पादित बयान देता है। – Mohit

+1

ठीक है अगर आपने सर्विसस्टैक स्वयं-होस्टेड एचटीपी लिस्टनर सेवा की मेजबानी की है तो आप :) :) लेकिन WinApp में एक वेबसर्वर डीबगिंग के लिए थोड़ा भारी लगता है। आप अपना खुद का ProfiledDbConnection भी बना सकते हैं और बस इसे कंसोल में सभी एसक्यूएल लॉग कर सकते हैं। यहां src https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack/MiniProfiler/Data/ProfiledDbConnection.cs – mythz

संबंधित मुद्दे