2009-05-04 9 views
19

द्वारा उत्पन्न क्वेरी को कैसे जानें I डेटा बेस पर कुछ चुनिंदा क्वेरी को आग लगाने के लिए लिनक को निबर्ननेट में उपयोग कर रहा हूं।Fluent NHibernate

मेरा प्रश्न है, फ्लुएंट एनएचबर्ननेट द्वारा उत्पन्न क्वेरी, मुझे कैसे पता चलेगा?

+3

धाराप्रवाह NHibernate ** नहीं ** किसी भी प्रश्न उत्पन्न करता है। यह एनएचबीर्नेट है जो उन्हें उत्पन्न करता है। –

+0

मुझे लगता है कि यह प्रश्न आपकी मदद कर सकता है: http://stackoverflow.com/questions/474659/how-to-log-sql-calls-with-nhibernate-to-the-console-of-visual-studio – HerbalMart

उत्तर

5

यदि आप SQL4 को लॉग 4नेट में रखना चाहते हैं, तो सुनिश्चित करें कि आप अपने कॉन्फ़िगरेशन अनुभाग में लॉगर सेट करें।

मैंने एनएचबीर्नेट पैकेज को "INFO" पर शोर और NHibernate.SQL को कम करने के लिए रखा ताकि सभी SQL कथन लॉग कर सकें।

 
<logger name="NHibernate"> 
    <level value="INFO" /> 
</logger> 


    <logger name="NHibernate.SQL"> 
    <level value="ALL" /> 
    </logger> 

2

this देखें। आपको क्या चाहिए hibernate.show_sql

+0

धन्यवाद .. ............. –

+7

आप फ़्लुएंट एनएचबेर्नेट के साथ इसे कैसे कॉन्फ़िगर करते हैं? –

35
धाराप्रवाह NHibernate के साथ

, आप show_sql इस तरह चालू कर सकते हैं:

Fluently.Configure() 
    .Database(MsSqlConfiguration.MsSql2005.ShowSql().ConnectionString(...))... 

NHibernate अब Console.Out के लिए हर एसक्यूएल बयान प्रिंट होगा।

+1

हाय केविन, इसे पोस्ट करने के लिए धन्यवाद! मुझे आश्चर्य है कि क्या आपने Log4Net को भी लगाया है, इसलिए यह जेनरेट की गई एसक्यूएल को फाइल में भेजता है? – 5x1llz

+13

यह बहुत निराशाजनक है। कोई विचार क्यों यह कभी काम नहीं करेगा? मैं अपने कंसोल के माध्यम से देख रहा हूं और यह अभी नहीं है। – Milimetric

0

तुम भी this one तरह एसक्यूएल प्रोफाइलर उपयोग कर सकते हैं।

-1

आप log4net में भी हुक कर सकते हैं।

0

निश्चित रूप से NHProf खरीदें और उपयोग करें। यह एक शानदार उत्पाद है और न केवल आपको दिखाता है कि कौन से प्रश्न चल रहे हैं, बल्कि यह आपके एनएचबीर्नेट मैपिंग और प्रश्नों के साथ संभावित प्रदर्शन समस्याओं को भी दिखाता है।

2

मुझे निबर्ननेट और धाराप्रवाह निबर्ननेट में एसक्यूएल क्वेरी जानने के लिए 4 विकल्प मिल गए हैं।

  1. लॉग - जॉय वी ने इसी प्रश्न के उत्तर में कहा।
  2. शोस्क्ल - केविन बेरिज ने इसी प्रश्न के उत्तर में कहा।
  3. एनएचप्रोफ - यह एक शानदार प्रोफाइलर है। NHProf
  4. इंटरसेप्टर - एसक्यूएल देखना वास्तव में अच्छा है। हम इसे विजुअल स्टूडियो के आउटपुट में और लॉग फ़ाइल में भी डाल सकते हैं।

    ISessionFactory sf = Fluently.Configure() 
         .Database(MySQLConfiguration.Standard.ConnectionString(ConnectionString).ShowSql()) 
         .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Stock>()) 
         .ExposeConfiguration(c => c.SetInterceptor(new ABCInterceptor())) 
         .BuildSessionFactory(); 
    
    
    public class ABCInterceptor : EmptyInterceptor 
    { 
        public override NHibernate.SqlCommand.SqlString OnPrepareStatement(NHibernate.SqlCommand.SqlString sql) 
        { 
         Trace.WriteLine(sql.ToString()); 
         return sql; 
        } 
    } 
    
संबंधित मुद्दे