2016-01-21 3 views
7

अगर मैं उदाहरणएसक्यूएल कि LINQ उत्पन्न

var query = (from a in this.Context.Apples select a.Name).ToList(); 

के लिए एसक्यूएल बयान करने के लिए एक LINQ है जब मैं देखने के लिए क्या एसक्यूएल LINQ द्वारा उत्पन्न की जा रही है चाहते देखकर, मैं क्या है कि मैं ToList() बाहर टिप्पणी और है इस LINQ कथन के बाद कमांड पर ब्रेकपॉइंट डालें और फिर मैं इसे होवर कर सकता हूं और एसक्यूएल पढ़ सकता हूं।

मेरा प्रश्न: क्या यह जेनरेट एसक्यूएल प्राप्त करने का सही तरीका है?

+1

मैं LINQPad का उपयोग करना पसंद। जेनरेट किए गए SQL को दिखाने के लिए इसमें "SQL" टैब है। –

उत्तर

3

हां, यह एक सही तरीका है, लेकिन निश्चित रूप से, वहाँ अन्य हैं:

var context = new DataClasses1DataContext(); 

var sb = new StringWriter(); 
context.Log = sb; 

var query = (from a in context.Persons select a.Name); 

string s = query.ToString(); 
string command = context.GetCommand(query).CommandText; 

//The log requires the query to actually hit the database 
query.ToList(); 
string log = sb.ToString(); 

और यह भी LINQPad:

enter image description here

5

तुम भी करने के लिए अपने संदर्भ के लिए लॉग गुण सेट कर सकते हैं:

public class MyContext : DbContext{ 

    MyContext(){ 
     Database.Log = Console.WriteLine; 
     //or like this 
     //Database.Log = message => Trace.TraceInformation(message); 
    } 
} 
1

तुम भी, एसक्यूएल सर्वर प्रोफाइलर का उपयोग एक निशान जोड़ सकते हैं और उत्पन्न क्वेरी दिखाई के रूप में वे सर्वर द्वारा क्रियान्वित किया जा रहा है कर सकते हैं।

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