2016-01-21 22 views
7

を生成SQLを見て、私がやっていることは、私がToList()をコメントアウトしていることですこのLINQステートメントの後にコマンドにブレークポイントを置き、それをホバーしてSQLを読むことができます。は、私はSQLが<code>LINQ</code>によって生成されているものを見たいとき、私は例</p> <pre><code>var query = (from a in this.Context.Apples select a.Name).ToList(); </code></pre> <p>のためのSQLステートメントにLINQを使用している場合LINQは

私の質問:これは生成されたSQLを取得する正しい方法ですか?

+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

またにあなたのコンテキストのログプロパティを設定することができます:あなたはまた、SQL Serverプロファイラを使用してトレースを追加し、彼らは、サーバーで実行されているように生成クエリーを見ることができます

public class MyContext : DbContext{ 

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

関連する問題

 関連する問題